【问题标题】:SQL and multiple statements in stored procedure存储过程中的 SQL 和多条语句
【发布时间】:2013-08-06 16:07:51
【问题描述】:

我正在使用 SQL Server 2005,我有一个非常简单的存储过程:

create PROCEDURE [dbo].[tblTabel_Insert] 
@ID int,
@Code nvarchar(50) = null
AS
    SET NOCOUNT ON;

  IF  EXISTS (SELECT ID, code FROM tblTabel WHERE ID = @ID and code = @Code) 
    UPDATE tblTabel SET ID = @ID,code = @Code WHERE ID = @ID

ELSE
BEGIN

INSERT INTO tblTabel (ID,code) VALUES ( @ID ,@Code);
END

我的问题是:我的存储过程中是否可以有多个查询? 我想添加行

UPDATE tblTabelB SET ID = @ID,code = @Code WHERE ID = @ID
UPDATE tblTabelC SET ID = @ID,code = @Code WHERE ID = @ID

在我的如果存在部分。如何以正确的方式更改我的存储过程?

【问题讨论】:

    标签: sql sql-server-2005


    【解决方案1】:
    IF  EXISTS (SELECT ID, code FROM tblTabel WHERE ID = @ID and code = @Code) 
    BEGIN
        UPDATE tblTabel SET ID = @ID,code = @Code WHERE ID = @ID
        UPDATE tblTabelB SET ID = @ID,code = @Code WHERE ID = @ID
        UPDATE tblTabelC SET ID = @ID,code = @Code WHERE ID = @ID
    END
    

    【讨论】:

    • @Sjemmie:这就是存储过程的意义所在。您可以使用条件、进行计算、进行多次插入、删除、更新,随心所欲。 :)
    【解决方案2】:

    只需将它们放在 BEGIN 和 END 之间

    IF  EXISTS (SELECT ID, code FROM tblTabel WHERE ID = @ID and code = @Code) 
    BEGIN
        UPDATE tblTabel SET ID = @ID,code = @Code WHERE ID = @ID
        UPDATE tblTabelB SET ID = @ID,code = @Code WHERE ID = @ID
        UPDATE tblTabelC SET ID = @ID,code = @Code WHERE ID = @ID    
    END   
    ELSE
    BEGIN
    
    INSERT INTO tblTabel (ID,code) VALUES ( @ID ,@Code);
    END
    

    【讨论】:

      猜你喜欢
      • 2012-08-17
      • 1970-01-01
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多