sqlserver和mysql存储过程的转化
下面是sqlserver存储过程和mysql存储过程的转化:
| SQL SERVER | MYSQL |
| GO | 去掉GO |
| create procedure之后的AS | 去掉AS |
| SET QUOTED_IDENTIFIER ON、SET ANSI_NULLS ON | 去掉这两句 |
| 使用参数带@符号 | 使用参数前去掉@ |
| create procedure()中的传入符号@参数 | @参数换成IN 参数 |
| sqlserver参数直接赋值 | 参数赋值写到BEGIN下面的set语句 |
| if begin......end else bgin......end | if then......else......end if |
| update a set ... from a,b | update a,b set... |
update p set ... from
product p LEFT JOIN product_price pp
where p.productid= pp.productid
|
UPDATE product p LEFT JOIN product_price pp
|
| convert | cast() |
| return语句 |
label:BEGIN LEAVE label; # 退出存储过程 |
| 调用存储过程,可以直接EXEC | CALL pro(a, b) |
| [dbo]. | 可以直接去除 |
| select a=b赋值 | select a into b |
| ISNULL(expr1,expr2) | IFNULL(expr1,expr2) |
| select * from test(nolock) | 去掉(nolock) |
| DATEDIFF(day,date1,date2) | DATEDIFF(date1,date2) |
| --注释 | #注释 |
| exec('select * from '+@tablename) |
declare msql varchar(2000); set @MyQuery='select * from '+tablename; prepare msql from @MyQuery; execute msql; |
#定义游标
declare std_cur cursor for ...... while (@@fetch_status = 0)
|
#遍历数据结束标志 declare done boolean default false; #定义游标 declare std_cur cursor for ...... #将结束标志绑定到游标 declare continue handler for not found set done=true; #打开游标 open std_cur; #当done为false时,会一直遍历,直到结束。 while !done do
|

浙公网安备 33010602011771号