【数据库】mysql和sql server写存储过程学到的一些知识

    xiaoxiao2021-12-04  52

    MYSQL

     

    SQL SERVER

     

    存储过程

    create

    CREATE PROCEDURE DmaReportYearly

    (IN today datetime,IN partition_id INT (11))

     COMMENT ''

    BEGIN

    end

    1参数被小括号包裹

    2参数前声明是in或者out

    3 int类型可声明长度

    4可加comment注释

    CREATE PROCEDURE DmaReportDaily @today datetime2,

     @partition_id INT AS

    BEGIN

    1参数不用括号

    2参数必须加@

    3 int类型不能写长度

    4 begin之前必须加as

    5一个存储过程内的分号可以不写

     

    drop

    drop procedure if exists

     

     if exists不可用

     

    ID自增

    create

    AUTO_INCREMENT

     

    identity(1,1)

    标识的概念代替了自增

     

     

     

     

    不可通过alter修改为自增

    先删除主键约束,删除字段,再重新创建字段

    游标

    读取

    fetch mycursor into myvar

     

    fetch next from mycursor into myvar

     

     

    判断状态

    declare cotinue handler for not found ....

    声明handler处理

    @@fetch_status

    全局变量判断

    日期

    增加

    date_add(mydate,

    interval 1 DAY)

    interval关键字

    dateadd(DAY,1,mydate)

     

     

    date_sub或者用负数

     

    用负数

     

     

    格式化

    DATE_FORMAT(mydate,

    '%Y%m%d')

     

    DATENAME(year,

    mydate)返回nvarchar,MONTH等函数返回数字

    数字类型不能用于拼接,需要cast(num as nvarchar)

    if

     

    if then

    elseif then

    else

    end if

     

    if begin end

    else begin end

     

    while

     

    while do

     end while

     

    while begin end

     

    存储过程调用

     

    call XX(var1,var2)

     

    exec/execute XX var1,var2

     

    函数

     

    可以内嵌其他函数

     

    貌似不允许

     

     

    join必须接on表示连接关系,无关系直接通过select放到查询字段中

    转载请注明原文地址: https://ju.6miu.com/read-680331.html

    最新回复(0)