我想创建一个存储过程..在创建它之前我正在检查数据库和表是否存在然后创建存储过程。我正在使用下面的SQL脚本,但它会引发语法错误。我不知道为什么失败了。
这是我得到的错误:
第15行,第15行,第1行,第9行 关键字'PROCEDURE'附近的语法不正确。
Msg 102,Level 15,State 1,Line 16
';'附近的语法不正确。Msg 102,Level 15,State 1,Line 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
答案 0 :(得分:1)
这是因为&#39 ;;'和' GO'。
使用以下脚本 -
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
答案 1 :(得分:0)
在创建POrocedure SP_test之前添加这些代码行解决了问题。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO