Creating procedure inside IF section

后端 未结 4 534
孤街浪徒
孤街浪徒 2021-01-04 17:54

I need some help with simple SQL code:

DECLARE @procExists int
SET @procExists = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = \'d         


        
4条回答
  •  礼貌的吻别
    2021-01-04 18:34

    CREATE PROCEDURE has to be in it's own batch

    So, dynamic SQL is one way:

    IF OBJECT_ID('Table_Exists') IS NULL
    BEGIN
        EXEC ('CREATE PROCEDURE Table_Exists
             @schemaName varchar(50),
             @tableName varchar(50)
         AS
             RETURN (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = @schemaName AND TABLE_NAME = @tableName)
    ')
    END
    

    or DROP first

    IF OBJECT_ID('Table_Exists') IS NOT NULL
      DROP PROC Table_Exists
    GO
    CREATE PROCEDURE Table_Exists
             @schemaName varchar(50),
             @tableName varchar(50)
         AS
             RETURN (SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = @schemaName AND TABLE_NAME = @tableName)
    GO
    

    Note the use of OBJECT_ID to see if the proc exists.

提交回复
热议问题