sqlSever的存储过程转换为mysql的
总体来说,sql sever和Mysql的存储过程的思路都是⼀样的,但是在语法和结构上还是有很⼤的区别的。
1. 在mysql中写存储过程所有的dbo都要去掉。
2. 每⼀个sql语句后⾯都需要加上;否则报错;
4. 再说参数,在MSSQL中我们⼀般会这么定义参数
CREATE PROCEDURE PROC_ST
(@operator varchar(300),
@ProcDate datetime,
@ErrorLog varchar(8000) OUTPUT)
但是在mysql中这种格式是不可以的;
⾸先在mysql中输⼊参数是in来表⽰,输出参数是out表⽰,如果不写,默认是in,其次在mysql中是没有@符号的,所以所有的@符号都要去掉
上述存储过程改写成mysql的话
create PROCEDURE PROC_ST
(
in operator varchar(300),
in ProcDate datetime,
out ErrorLog varchar(8000)
)
5.关于时间的问题
5.1 获取时间格式
在MSSQL中我们来获取时间⼀般⽤CONVERT来表⽰,例如
set@YearMonth = CONVERT(varchar(6),@ProcDate,112);
这句话的意思就是获取时间的年⽉并且格式是yyyymm的,112代表的是⼀种格式;
但是在mysql中我修改的时候却⼀直报错,所以我换了⼀种写法
year(now())*100+month(now())
这样就可以了;
5.2
转换时间格式
同样的,在MSSQL中⽤CONVERT(varchar(6),参数,112) = @YearMonth 就可以使⽤,但是在MYSQL中我⽤的是cast强制转换才可以
CAST(
REP.FACT_DATE
AS
CHAR(6) )
6.
关于if的使⽤
在MSSQL中⽤
If()
Begin
程序⽚段
End
Else
Begin
程序⽚段
sqlserver卸载教程
End就可以;
但是在Mysql中是不认的,if的后⾯必须有then,⽽且每⼀个else if的后⾯必须有;作为结束符号,否则不管你怎么调试也是过不去的
下⾯的是我改写的⼀个函数,⽐较简单,主要是⽐较⼀下语法
CREATE FUNCTIONLOAN_PERIOD
(
begindate int,
enddate int
)
mysql查看所有存储过程
RETURNSvarchar(8000)
BEGIN
if(enddate-begindate <= '3')
then
return '10';
end if;
if(enddate-begindate>'3' andenddate-begindate <= '6')
then
return '20';
end if;
if(enddate-begindate>'6' andenddate-begindate <= '12')
then
return '30';
z型钢是如何加工的end if;
return '40';
END
7.关于在时间的增加或者减少
我们⼀般在MSSQL中想得到⽇期的上⼀个⽉⼀般会这么写
CONVERT (VARCHAR(6),DATEADD ("Month", -1, @ProcDate), 112)
DATEADD是MSSQL的内置函数;
但是在mysql中是没有这个函数的,那我们应该怎么办呢,别着急,在mysql中有DATE_SUB函数,基本上也能满⾜我们的需求,上⾯这句话改写完成后
CAST(DATE_SUB(ProcDate,INTERVAL1 MONTH) AS CHAR(6))
8.关于表变量
在MYsql中时不存在表变量这个概念的,但是却可以⽤临时表来代替,在Mysql中我们创业临时表⼀般⽤
structure of the text
CREATEtemporary
table tempTotal 来进⾏创建,还有⼀点好处,就是临时变量在存储过程执⾏完会⾃动释放,不会占⽤⼤量内存;
两个数组拼接成一个新数组
9.在MSSQL中会常常⽤到下⾯这个声明
DECLARE
VARCHAR (MAX);
jsp教学视频
但是在mysql中没有max这个概念,我⼀般会⽤varcahr(8000)来替代,⽹上众说纷纭,说varchar最⼤值多少的都有,我没试验过,改写的时候慎⽤。
10.在MSSQL中⾦融产品化会常常⽤到下⾯这个声明
DECLARE
VARCHAR (MAX);
但是在mysql中没有max这个概念,我⼀般会⽤varcahr(8000)来替代,⽹上众说纷纭,说varchar最
⼤值多少的都有,我没试验过,改写的时候慎⽤。
11. 在mysql中没有isnull函数,所以我们⽤ifnull来代替,⽤法⼀样;
以上就是我改写的过程中碰到的⼀些问题,希望对⼤家能有所帮助吧!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。