SqlServer 数据库存储过程迁移到MySql数据库中遇到的一些问题

由于SqlServer数据库和MySql数据库的存储过程语法较不一样,在迁移存储过程的时候很多细节性问题需要注意,因此记录下来
1、传入参数:
    ①sqlserver存储过程的传入参数带@符号,
        例如:

CREATE PROCEDURE [dbo].[Test]
        @ParmA VARCHAR(50),
        @ParmB INT

    ②myqsl存储过程的参数不带@符号
        例如:

create PROCEDURE Con_InsertDevicecontrollog(ParmA VARCHAR(50),ParmB INT)

2、存储过程的开始:
    sqlserver存储过程的开始在BEGIN之前有AS,END结束以后有GO,mysql开始没有AS,结束也没有GO。
3、参数的声明:
    ①sqlserver中声明参数可以在一行中声明,并且带有@符号。

         例如:

DECLARE @a INT,@a INT

    ②mysql中声明参数需要每一个参数都声明一个declare语句,参数没有@符号,并且用分号隔开。

        例如:

DECLARE a INT;    
DECLARE b INT;    

 4、参数的使用:
    虽然mysql中声明参数的时候没有@符号,存储过程中使用时也没有@符号。

5、if语句:
    ①sqlserver中if条件中的语句应该包含在BEGIN-END块中。 
        例如:  

 IF @a IS NULL
                BEGIN
                    SELECT * FROM test_bable_a
                END 
                ELSE
                BEGIN 
                   SELECT * FROM test_bable_b
                END


    ②if语句后用then执行语句块中的内容,不用包含在BEGIN-END块中,结尾用end if,注意最后要加分号。
        例如:  

IF (@a is NULL) then 
                    SELECT * FROM test_bable_a;
                ELSE
                    SELECT * FROM test_bable_b;
                end if;

6、注释:

      ①sqlserver中的但行注释符号是   --

      ②mysql中的单行注释也是   --   ,但是注意后面一定要有个空格,我在迁移的时候就没有写空格,注释不起作用,还困惑了半天ToT......

7、获得系统当前时间:

     ①sqlserver中获得系统当前时间的函数是getdate()。

     ②mySql中获得系统当前时间的函数是NOW()。

8、执行存储过程:

     ①SqlServer是   exec pro_name para1,para2

     ②mysql是   call pro_name (para1,para2)

9、参数的使用:

    ①sqlserver对于已有的参数,全部都用@符号进行赋值和调用即可。

    ②mysql的存储过程,在赋值的时候需要用@符号,但是在调用的时候不用加@符号。

你可能感兴趣的:(数据库)