zoukankan      html  css  js  c++  java
  • SqlServer=>MySql

    原文:http://www.cnblogs.com/andrew-blog/archive/2011/12/03/SQL_mss2sql.html#3242272

    工具:http://files.cnblogs.com/files/newsea/mss2sql.rar

    能把表,数据导过去。MySql挺狠的。

    视图,函数,存储过程,导不过去。

    另外,MySql不支持匿名块,批量操作,声明变量,只能写到存储过程或函数。

    MsSql => MySql

    1. 去除[dbo].   去除  空格dbo.

    2. [] =》 ``

    3. 去除@, MySql定义变量不用@, 但是可以不定义变量直接使用@变量

    4. if 格式更拘束, end if 后面必须加;

    5. 自定义函数或自定义存储过程前添加: delimiter $$

    6. 函数和存储过程 定义头部去除 as

    7. 函数中 declare 必须定义到最前面。 且 declare 没有 as

    8. cast 函数

      Cast(xxx as int) 会出错,=》 cast( xxx as signed)  或 cast( xxx as unsigned) ;  

      cast(xxx as varchar(30)) 会出错 ,=》 cast(xxx as char(30));

    9. 数据类型及系统函数: getdate() => now() , top 1 => limit 0,1

    10. 即使没有参数,可不能省略 ()

    11. proc =》 procedure 

    12. exec  p c1,c2 => call  p(c1,c2)

    13. 动态执行SQL:

      不能用nvarchar, 

    declare sqlStr varchar(4000) ;
    
    set sqlStr = '很长的SQL';
    
    set @sqlStr = replace(sqlStr,'{CorpID}', CorpID ) ;
    
    prepare smt from @sqlStr ;
    execute smt ;
    DEALLOCATE PREPARE smt;

    第三行。 一定要定义一个临时变量才能被 prepare ,我用了 @sqlStr , 它不是 sqlStr.

     14. select 给变量赋值 : select @id = Id,@name= name from tab where Id=1 ; => select Id,Name into id,name  from tab where Id = 1 ;

    15. 退出存储过程的方法 :没有 return , exit,quit 之类的。

      在定义存储过程头部 begin 前添加标签 :  bn: begin   ,在需要退出的地方,执行: leave bn;

    16.避免变量名和列名重名。

    delimiter $$
    create procedure atest(Id int)
    begin
    select * from S_City where Id = Id ;
    end;
    $$
    
    call atest( 3) ;

    并不会返回 Id 为3 的记录。

    17.

  • 相关阅读:
    第10章 指针(二) 首地址指针
    第10章 指针(五) 使用地址指针的引用
    第10章 指针(六) 指针小结
    C语言中的类模拟(C++编程思想)
    经典SQL语句大全
    C#ADO.NET操作数据代码汇总
    C#日期格式化
    第10章 指针(四) 地址簿指针变量
    数据库设计中的14个技巧
    第9章 预处理命令
  • 原文地址:https://www.cnblogs.com/newsea/p/4707494.html
Copyright © 2011-2022 走看看