『壹』 有什麼工具可以把oracle里的存儲過程轉換成sqlServer存儲過程
知道的話跟我說下
『貳』 如何在sql server存儲過程中轉化數據類型
不一定非要在存儲過程中轉換,用普通的sql語句就可以,一般用cast函數。
測試方法:
創建表及插入數據:
createtabletest
(idint,
starttimevarchar(20));
insertintotestvalues(1,'2015-07-11');
將starttime欄位轉化為datetime類型:
selectcast(starttimeasdatetime)fromtest;
結果如圖,這時,starttime就轉成了datetime類型:
『叄』 mysql與oracle存儲過程之間的轉換
建議使用PowerDesigner將ORACLE轉換為物理模型,再轉換為邏輯高山模戚攜中型,然後通過這個邏輯模型重新選擇DBMS(MYSQL),將其轉換為MYSQL的物理邏輯模型,在物理邏輯模型上更新觸發器,過程等對象,然後生成MYSQL的物理文件,或直接隱派導入到MYSQL資料庫實例中。
『肆』 SQL Server中的下面那個存儲過程轉換成在Navicat for MySQL中是什麼樣的
createprocerecheckStu
(INidvarchar(10),
INnamevarchar(20),
INclassvarchar(10)
)
begin
declarenewidvarchar(12);
declarenewnamevarchar(22);
declarenewclassvarchar(12);肢做
setnewid=CONCAT('%',id,'%');
setnewname=CONCAT('%',name,'哪飢談%');
setnewclass=CONCAT('%',class,'%');
select李碰*fromstudentwhere學號likenewidand班級likenewclassand姓名likenewname
end
直翻,無校驗
----------------
你真是貪心---連排版都省了。你不懂兩個問題分開問,排版一下,得到回答的幾率都大。
『伍』 PostgreSQL存儲過程轉換SQLServer的
因sql server2000中不允許調用當前時間的函數getdate(),也不允許非表變數之外的update、insert、delete操作,故這里修改為存儲過程,其中原來的return值改用輸出參數"@Result int output"來實現,具體如下:
CREATE PROCEDURE web_login(@web_username varchar(50), @web_pwd varchar(50), @web_ip varchar(50),@Result int output)
AS
BEGIN
declare
@len int, -- -2 fail -3 lockip
@u_locktime varchar(10),
@u_cleartime varchar(50),
@u_count int,
@user_id int,
@log_id int,
@cal int
set @len=0
select @u_count=config_value from as_all_config where config_item='U_AllowCount'
select @u_cleartime=config_value from as_all_config where config_item='U_LimitDay'
set @cal=@u_cleartime
select @u_locktime=config_value from as_all_config where config_item='U_Locktime'
--判斷用戶是否已經鎖定
select top 1 @len=serialno from web_user_log where login_id =@web_username and last_ip=@web_ip and last_lock_time<getdate() and last_count= @u_count
if @len>0
begin
insert into as_log(log_fromtype, log_type,log_text, log_level) values(8,4,'用戶 '+@web_username+'登錄失敗 ip鎖定',1)
set @Result=-3
RETURN
end
--判斷用戶失敗次數
select top 1 @len=last_count,@log_id=serialno from web_user_log where login_id =@web_username and last_ip=@web_ip and convert(varchar(10),last_fail_time,120)=convert(varchar(10),getdate(),120) order by last_fail_time desc
if @len>3
begin
update web_user_log set last_lock_time=getdate() where serialno=@log_id
insert into as_log(log_fromtype, log_type,log_text, log_level) values(8,4,'用戶 '+@web_username+'登錄失敗 ip鎖定',1)
set @Result=-3
RETURN
end
--正常操作
select top 1 @len=last_count, @log_id=serialno from web_user_log where login_id =@web_username and last_ip=@web_ip and convert(varchar(10),last_fail_time,120)=convert(varchar(10),getdate(),120) order by last_fail_time desc
select top 1 @user_id=serialno from web_user where login_id = @web_username and login_pwd=@web_pwd
delete from web_user_log where login_id =@web_username and last_lock_time<=convert(varchar(10),dateadd(day,-@cal,getdate()),120)
if @user_id>0
begin
insert into as_log( log_fromtype, log_type, log_text, log_level) values(8,4,'用戶 '+@web_username+'登錄成功',1)
set @Result=@user_id
RETURN
end
else if (@len is null or @len=0)
insert into web_user_log(last_count, last_ip, login_pwd, login_id) values(1,@web_ip,@web_pwd,@web_username)
else
update web_user_log set last_count=last_count+1 where serialno=@log_id
insert into as_log(log_fromtype, log_type, log_text, log_level)values(8,4,'用戶 '+@web_username+'登錄失敗',1)
set @Result=-2
RETURN
END
go
--更改當前資料庫中對象的所有者:
sp_changeobjectowner 'web_login','ema_user'
go
『陸』 SQL server 存儲過程varchar到int類型轉換
/*
存儲過程的return只能返回int類型的數據,並且只這樣接收返回值的
declare@Aint
Exec@A=P_判斷是否閏年
select@A
*/
--你可以改成這樣
alterprocP_判斷是否閏年
as
begin
declare@時間int
set@時間=datepart(year,'2000-02-01')
selectCASEWHEN(@時間%4=0AND@時間%100<>0)or(@時間%400=0)then'是閏年'
else'不是閏年'
end
end
--也可以這樣
alterprocP_判斷是否閏年(@RstVarchar(10)output)
as
begin
declare@時間int
set@時間=datepart(year,'2000-02-01')
Set@Rst=CASEWHEN(@時間%4=0AND@時間%100<>0)or(@時間%400=0)then'是閏年'
else'不是閏年'
end
end
/*
declare@Avarchar(10)
ExecP_判斷是否閏年@Aoutput
select@A
*/
『柒』 存儲過程類型轉換
自己寫的么?
1有些地方沒必要4個單引號,3個就行,在sql中字元串的拼接語句中要表示1個單引號就得用兩個單引號,前一個表示轉義的意思,編程語言都有轉義一說
2因為是字元串拼接的,而@FormerPrice這些是money類型的,如果不轉換,就默認要把字元串轉換成money類型了,就會出錯。所以得把@FormerPrice之類的轉換成字元類型的,存儲過程修改如下
ALTER PROCEDURE [dbo].[SearchMerchandise]
@Category varchar(50),
@Brand varchar(50),
@Type varchar(50),
@FormerPrice money,
@LatterPrice money
AS
BEGIN
declare @QueryString varchar(100)
set @QueryString = 'select * from Merchandise where Category = ''' + @Category + ''' and Brand = ''' + @Brand + ''' '
SET NOCOUNT ON;
if @Type<>''
set @QueryString = @QueryString+' and Type=''' +@Type+ ''''
if @FormerPrice<>'' and @LatterPrice<>''
set @QueryString = @QueryString+' and PriceNow between '''+ convert(varchar(20),@FormerPrice) + ''' and ''' + convert(varchar(20),@LatterPrice) + ''''
if @FormerPrice<>'' and @LatterPrice=''
set @QueryString = @QueryString+' and PriceNow >=''' + convert(varchar(20),@FormerPrice) + ''''
if @FormerPrice='' and @LatterPrice<>''
set @QueryString = @QueryString+' and PriceNow <=''' + convert(varchar(20),@LatterPrice) + ''''
exec(@QueryString)
END
因為沒有表結果不能進行測試,所以可能會出錯,如果出錯就把表結果發一下,進行測試
『捌』 求幫助,將oracle的存儲過程轉換為mysql的存儲過程
1. 首先是jdbc.properties屬性文件的編寫,便於資料庫移植:
datasource.driverClassName=oracle.jdbc.driver.OracleDriver
datasource.url=jdbc:oracle:thin:@10.6.1.11:1521:student
datasource.username=zs
datasource.password=zs
datasource.defaultAutoCommit=true
hibernate.dialect=org.hibernate.dialect.Oracle9Dialect
#當連接池中的連接耗盡的時候c3p0一次同時獲取的連接數。Default: 3
c3p0.acquireIncrement=5
#初始化戚遲時獲取三個連接,取值應在minPoolSize與maxPoolSize之間。Default: 3
c3p0.initialPoolSize=10
#每60秒檢查所有連接池中的空閑連接。Default: 0
c3p0.idleConnectionTestPeriod=600
#-連接池中保留的最小連接數。
c3p0.minPoolSize=5
#連接池中保留的最大連接數。如租Default: 15
c3p0.maxPoolSize=50
#JDBC的標准參數,用以控制數據源內載入的PreparedStatements數量。但由於預緩存的statements
#屬於單個connection而不高橡李是整個連接池。所以設置這個參數需要考慮到多方面的因素。
#如果maxStatements與maxStatementsPerConnection均為0,則緩存被關閉。Default: 0
c3p0.maxStatements=100
#c3p0是非同步操作的,緩慢的JDBC操作通過幫助進程完成。擴展這些操作可以有效的提升性能
#通過多線程實現多個操作同時被執行。Default: 3
c3p0.numHelperThreads=10
#最大空閑時間,60秒內未使用則連接被丟棄。若為0則永不丟棄。Default: 0
c3p0.maxIdleTime=600
#hibernate.dialect=org.hibernate.dialect.SQLServerDialect
hibernate.jdbc.batch_size=25
hibernate.jdbc.fetch_size=50
hibernate.show_sql=true
hibernate.connection.release_mode=after_transaction
2. 其次是spring配置文件的數據源配置:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>/WEB-INF/classes/conf/jdbc/jdbc.properties</value>
</property>
</bean>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" dependency-check="none">
<property name="driverClass">
<value>${datasource.driverClassName}</value>
</property>
<property name="jdbcUrl">
<value>${datasource.url}</value>
</property>
<property name="user">
<value>${datasource.username}</value>
</property>
<property name="password">
<value>${datasource.password}</value>
</property>
<!-- 當連接池中連接耗盡的時候c3p0一次同時獲取的連接數 -->
<property name="acquireIncrement">
<value>${c3p0.acquireIncrement}</value>
</property>
<!--初始化時獲取三個連接,取值應在minPoolSize與maxPoolSize之間。Default: 3 -->
<property name="initialPoolSize">
<value>${c3p0.initialPoolSize}</value>
</property>
<!-- 最小連接數 -->
<property name="minPoolSize">
<value>${c3p0.minPoolSize}</value>
</property>
<!-- 最大連接數 -->
<property name="maxPoolSize">
<value>${c3p0.minPoolSize}</value>
</property>
<!--最大空閑時間,60秒內未使用則連接被丟棄。若為0則永不丟棄。Default: 0 -->
<property name="maxIdleTime">
<value>${c3p0.maxPoolSize}</value>
</property>
<!--每60秒檢查所有連接池中的空閑連接。Default: 0 -->
<property name="idleConnectionTestPeriod">
<value>${c3p0.idleConnectionTestPeriod}</value>
</property>
<!--JDBC的標准參數,用以控制數據源內載入的PreparedStatements數量。但由於預緩存的statements屬於單個connection而不是整個連接池。
所以設置這個參數需要考慮到多方面的因素。如果maxStatements與maxStatementsPerConnection均為0,則緩存被關閉。Default: 0-->
<property name="maxStatements">
<value>${c3p0.maxStatements}</value>
</property>
<!--c3p0是非同步操作的,緩慢的JDBC操作通過幫助進程完成。擴展這些操作可以有效的提升性能通過多線程實現多個操作同時被執行。Default: 3-->
<property name="numHelperThreads">
『玖』 有好的Mysql轉換為Oracle轉換工具沒有
可以用這個軟體
Convert Mysql to Oracle
最新版本:4.0
Convert Mysql to Oracle是一個免費的資料庫轉換工具,實現快速安全地將Mysql資料庫導入為ORACLE資料庫。
Convert Mysql to Oracle 功能特點
可以轉換所有的Mysql欄位類型
支持所有版本的Mysql
可以將數據合並到已經存在的ORACLE表中
非常容易使用的向導模式
支持所有版本的Mysql字元集
對超大數據表的導出進行了優化處理
Convert Mysql to Oracle 功能限制
不能轉換MYSQL的存儲過程
Convert Mysql to Oracle 運行需求
有相應的資料庫操作許可權
在機器中安裝了ORACLE客戶端,使得Convert Mysql to Oracle能夠成功連接到ORACLE
這個軟體是免費的,網路上一搜就出來了`
『拾』 oracle存儲過程\觸發器轉換為SQLSERVER
把存儲過程單拉出來寫,觸發備肆器觸發岩李的時候調用該仿棗轎過程
like
create
or
replace
procere
aaa
(para1
in
varchar...)
is
begin...end;
----------------------------------------------------------------
CREATE
OR
REPLACE
TRIGGER
interface_ygcc
BEFORE
UPDATE
ON
表1
FOR
EACH
ROW
aaa(para1...)