zoukankan      html  css  js  c++  java
  • Trigger&Procedure的應用

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tg_user_add]'and OBJECTPROPERTY(id, N'IsTrigger'= 1)
    drop trigger [dbo].[tg_user_add]
    GO

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tg_user_edit]'and OBJECTPROPERTY(id, N'IsTrigger'= 1)
    drop trigger [dbo].[tg_user_edit]
    GO

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tg_test]'and OBJECTPROPERTY(id, N'IsTrigger'= 1)
    drop trigger [dbo].[tg_test]
    GO

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_output]'and OBJECTPROPERTY(id, N'IsProcedure'= 1)
    drop procedure [dbo].[sp_output]
    GO

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_output_return]'and OBJECTPROPERTY(id, N'IsProcedure'= 1)
    drop procedure [dbo].[sp_output_return]
    GO

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_return]'and OBJECTPROPERTY(id, N'IsProcedure'= 1)
    drop procedure [dbo].[sp_return]
    GO

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[test_output]'and OBJECTPROPERTY(id, N'IsProcedure'= 1)
    drop procedure [dbo].[test_output]
    GO

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[test_output_return]'and OBJECTPROPERTY(id, N'IsProcedure'= 1)
    drop procedure [dbo].[test_output_return]
    GO

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[test_return]'and OBJECTPROPERTY(id, N'IsProcedure'= 1)
    drop procedure [dbo].[test_return]
    GO

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[user]'and OBJECTPROPERTY(id, N'IsUserTable'= 1)
    drop table [dbo].[user]
    GO

    CREATE TABLE [dbo].[user] (
        
    [id] [char] (10) COLLATE Chinese_Taiwan_Stroke_CI_AS NOT NULL ,
        
    [name] [varchar] (10) COLLATE Chinese_Taiwan_Stroke_CI_AS NOT NULL ,
        
    [ename] [varchar] (50) COLLATE Chinese_Taiwan_Stroke_CI_AS NOT NULL ,
        
    [email] [varchar] (50) COLLATE Chinese_Taiwan_Stroke_CI_AS NOT NULL ,
        
    [tel] [varchar] (20) COLLATE Chinese_Taiwan_Stroke_CI_AS NOT NULL 
    ON [PRIMARY]
    GO

    ALTER TABLE [dbo].[user] WITH NOCHECK ADD 
        
    CONSTRAINT [PK_user] PRIMARY KEY  CLUSTERED 
        (
            
    [id]
        )  
    ON [PRIMARY] 
    GO

    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS OFF 
    GO

    CREATE PROCEDURE [dbo].[sp_output]
    (
       
    @i char(1)='1',
       
    @a varchar(5)=null output
    )
     
    AS
    begin
      
    if(@i='1')
        
    set @a='aaaaa'
      
    else
        
    set @a='bbbbb'
    end
    GO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO

    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS OFF 
    GO

    CREATE PROCEDURE [dbo].[sp_output_return]
    (
       
    @i char(1)='1',
       
    @a varchar(5)=null output
    )
     
    AS
    begin
      
    if(@i='1')
      
    begin
        
    set @a='aaaaa'
        
    return 1
      
    end
      
    else
      
    begin
        
    set @a='bbbbb'
        
    return 0
      
    end
    end
    GO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO

    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS OFF 
    GO

    CREATE PROCEDURE [dbo].[sp_return]
    (
       
    @i char(1)='1'
    )
     
    AS
    begin
      
    /*
      --return只能返回一個int類型的值,相反output則可以傳回更多類型的值
      無條件退出查詢或程序。RETURN 是立即而完整的,而且可在任何時刻用於退出程序、批次,或陳述式封鎖。
      其中附隨有 RETURN 的陳述式不會被執行。
      
    */
      
      
    if(@i='1')
        
    return 1
      
    else
        
    return 0
    end
    GO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO

    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS OFF 
    GO

    CREATE PROCEDURE [dbo].[test_output]
    (
      
    @i char(1)='1'
    )
     
    AS
    begin
      
    declare @b varchar(5)
      
    exec sp_output @i,@b output
      
    --exec @b=sp_output @i,@b output
      print @b
    end
    GO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO

    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS OFF 
    GO

    CREATE PROCEDURE [dbo].[test_output_return]
    (
      
    @i char(1)='1'
    )
     
    AS
    begin
      
    declare @b int
      
    declare @a varchar(5)
      
    exec @b=sp_output_return @i,@a output
      
    print(@a)
      
    print(@b)
    end
    GO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO

    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS OFF 
    GO

    CREATE PROCEDURE [dbo].[test_return]
    (
      
    @i char(1)='1'
    )
     
    AS
    begin
      
    declare @b varchar(5)
      
    exec @b=sp_return @i
      
    if (@b=1)
        
    print('aaaaa')
      
    else
        
    print('bbbbb')
    end
    GO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO

    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO

    CREATE TRIGGER [tg_user_add] ON [dbo].[user] 
    FOR INSERT 
    AS
    begin
      
    declare @id char(10)
      
    declare @name varchar(10)
      
    declare @ename varchar(50)
      
    declare @email varchar(50)
      
    declare @tel varchar(20)
      
    declare @sql varchar(500)
      
    declare user_cr cursor for  select [id],[name],[ename],[email],[tel] from inserted
      
    open user_cr
      
    fetch next from user_cr
      
    into @id,@name,@ename,@email,@tel
      
    while @@fetch_status=0
      
    begin
        
    set @sql='insert into [user] (id,name,ename,email,tel) values (''' + @id + ''',''' + @name + ''',''' + @ename + ''',''' + @email + ''',''' + @tel + ''')'
        
    print(@sql)
        
    fetch next from user_cr
        
    into @id,@name,@ename,@email,@tel
      
    end
      
    close user_cr
      
    deallocate user_cr
      
    select * from deleted
      
    select * from inserted
    end





    GO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO

    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO

    CREATE TRIGGER [tg_user_edit] ON [dbo].[user] 
    FOR update
    AS
    begin
      
    declare @id char(10)
      
    declare @name varchar(10)
      
    declare @ename varchar(50)
      
    declare @email varchar(50)
      
    declare @tel varchar(20)
      
    declare @sql varchar(500)
      
    declare user_cr cursor for  select [id],[name],[ename],[email],[tel] from inserted
      
    open user_cr
      
    fetch next from user_cr
      
    into @id,@name,@ename,@email,@tel
      
    while @@fetch_status=0
      
    begin
        
    set @sql='insert into [user] (id,name,ename,email,tel) values (''' + @id + ''',''' + @name + ''',''' + @ename + ''',''' + @email + ''',''' + @tel + ''')'
        
    print(@sql)
        
    fetch next from user_cr
        
    into @id,@name,@ename,@email,@tel
      
    end
      
    close user_cr
      
    deallocate user_cr
      
    select * from deleted
      
    select * from inserted
      
    exec test_output_return
    end





    GO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO

    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO

    CREATE TRIGGER [tg_test] ON [dbo].[user] 
    FOR INSERTUPDATEDELETE 
    AS
      
    print('1111111111')
    GO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO

    說明:
    1,trigger中可以調用procedure.而procedure中不可以調用tiegger

    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    HttpInvoker-----服务端实现
    RMI实现-----客户端的实现
    RMI实现-----服务端的实现
    远程服务(RMI)使用示例
    DispatcherServlet的逻辑处理(下篇)
    DispatcherServlet的逻辑处理(上篇)
    SpringMVC-----DispatcherServlet
    SpringMVC-----ContextLoaderListener
    爬取淘宝笔记本电脑数据(一)
    哔哩哔哩自动播放视频
  • 原文地址:https://www.cnblogs.com/Athrun/p/1216733.html
Copyright © 2011-2022 走看看