首页 文章

SQL Server存储过程创建中的语法错误

提问于
浏览
0

我想在创建它之前创建一个存储过程..我正在检查数据库和表是否存在,然后创建存储过程 . 我正在使用下面的SQL脚本,但它会引发语法错误 . 我不知道为什么失败了 .

这是我得到的错误:

消息156,级别15,状态1,行9关键字'PROCEDURE'附近的语法不正确 . 消息102,级别15,状态1,行16'''附近的语法不正确 . 消息102,级别15,状态1,行2'END'附近的语法不正确 .

码:

IF (EXISTS(SELECT TOP 1 * FROM sys.databases
           WHERE name = 'testdb1'))
BEGIN
    IF (EXISTS (SELECT TOP 1 *
                FROM INFORMATION_SCHEMA.TABLES 
                WHERE TABLE_SCHEMA = 'dbo' 
                  AND TABLE_NAME = 'TableA'))
    BEGIN 
        CREATE PROCEDURE SP_TEST
        AS
        BEGIN
            SET NOCOUNT ON;

            SELECT TableA.[Key] AS Expr1
            FROM testdb1.dbo.TableA
            ORDER BY TableA.[Key];
        END;    
        GO
    END
END

2 回答

  • 0

    在创建POrocedure SP_test之前添加这些代码行解决了问题 .

    SET ANSI_NULLS ON
                    GO
                    SET QUOTED_IDENTIFIER ON
                    GO
    
  • 1

    这是因为';'去' .

    使用下面的脚本 -

    IF (EXISTS(SELECT top 1 * FROM sys.databases
                where name = 'testdb1'))
                BEGIN
                    IF (EXISTS (SELECT top 1 *
                                     FROM INFORMATION_SCHEMA.TABLES 
                                     WHERE TABLE_SCHEMA = 'dbo' 
                                     AND  TABLE_NAME = 'TableA'))
                    BEGIN 
                        CREATE PROCEDURE SP_TEST
                        AS
                        BEGIN
                            SET NOCOUNT ON;
                            SELECT TableA.[Key] AS Expr1
                            FROM testdb1.dbo.TableA
                            ORDER BY TableA.[Key]
                        END
                    END
                END
    

相关问题