zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    常量,基本运算符,if判断,while循环
    python解释器的垃圾回收机制,小整数池,变量的三个特性,is与==,与用户交互,数据类型的基本使用,基本运算符
    编程语言的分类,python解释器多版本共存.执行python的两种方式,变量,用户与程序交互
    编程简介
    bootstrap 无限极菜单
    JQuery lhgdialog使用
    mysql 不是主键不能删除的保护问题解决办法?
    遍历所有的选中的radio的个数和值
    MySQL 的 RowNum 实现
    Ibatis 测试出SQL
  • 原文地址:https://www.cnblogs.com/haosit/p/10766538.html
Copyright © 2011-2022 走看看