• SQL Server 存储过程、函数、触发器的定义


    一、定义存储过程

      当存储过程需要有返回值时,可以使用output关键字或return关键字。output和return不能同时使用

    --定义
    create procedure program
        --@parameter int 定义参数
        --@parameter int output 利用output关键字返回接口
    as 
    begin 
        print '';
        --return ''; 利用return关键字返回结构
    end
    --调用 execute 存储过程名 参数
    execute program
    --赋值的方式调用
    declare @cc varchar(10)
    execute @cc = program

    二、定义函数

      1. 标量值函数:

        返回一个确定类型的标量值,例如:int,char,bit等

    --创建标量值函数
    create function func_1(@func_parameter_1 int,@func_parameter_2 int)
    returns int
    as 
    begin 
        return 1
    end

      2. 表值函数

        内联表值函数和多语句表值函数,都叫做表值函数,只是在定义返回值时,多语句确定了返回表的字段

    --内联表值函数
    create function func_table(@parameter_id varchar(36))
    returns table
    as
    return select ID,Name from Members where ID = @parameter_id
    go
    --多语句表值函数
    create function func_table1(@parameter_id varchar(36))
    returns @tab_1 table(
        ID varchar(36),
        Name varchar(10)
    )
    as
    begin
        insert into @tab_1 select ID,Name from Members
        return
    end

      3.调用函数

        在存储过程中调用函数时,需要带上“dbo.” 看看是那个数据库的。表值函数也可以用“insert into ……select ‘函数’ ”赋值给表变量或临时表等

    -- 标量函数
    declare @params varchar(100)
    select @params = dbo.func_1(1,2);
    -- 表值函数
    select * from func_3('parameter_varchar');
    select @params = Name from func_table('parameter_varchar');

    三、触发器

    --基本语法
    create trigger Trigger_Name
    on TableName for type --type:insert,update,delete 
    as
    --执行逻辑

      1. insert 定义触发器并获取当前值

    create trigger Member_Inserts
    on Member for insert
    as
    declare @id varchar(36)
    select @id = id from inserted;
    insert into Member(ID,Sex) values(@id+'insert',0);

      2. update 触发器

      update 触发器获取修改前的值和修改后的值。update操作等于先删除记录,再插入新的记录

    create trigger Member_Updates
    on Member for update
    as
    declare @idnew varchar(36);
    declare @idold varchar(36);
    select @idnew = id from inserted;--inserted在修改时存放的新值的临时表
    select @idold = id from deleted;--deleted在修改时存放的旧值的临时表
    insert into Member(ID,Sex) values(@idnew+'new',0);
    insert into Member(ID,Sex) values(@idold+'old',0);

      3.delete 触发器

    create trigger Member_Deletes
    on Members for delete
    as
    declare @idold varchar(36);
    select @idold = id from deleted;--deleted在修改时存放的旧值的临时表
    insert into Members(ID,CreateTime,Author,Status) values(NEWID(),GETDATE(),@idold,0)
  • 相关阅读:
    python的整除,除法和取模对比
    jq禁用双击事件
    jq判断滑动方向
    jq获取下拉框中的value值
    html字符串转换成纯文字
    内层div相对于外层div水平垂直居中以及外层div相对body水平垂直居中
    python获取用户输入
    js判断浏览器是否支持localStorage
    CLR的执行模型
    行人检测2(行人检测的发展历史)
  • 原文地址:https://www.cnblogs.com/haosit/p/10766538.html
Copyright © 2020-2023  润新知