gpt4 book ai didi

sql - SET 附近的语法不正确。期待外部

转载 作者:行者123 更新时间:2023-12-04 23:47:16 24 4
gpt4 key购买 nike

我正在尝试检查存储过程是否存在,如果不存在,则创建它。

我收到错误

Incorrect Syntax Near SET. Expecting EXTERNAL



代码:
IF (NOT EXISTS (SELECT * 
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA = 'dbo'
AND ROUTINE_NAME = 'ELMAH_GetErrorXml'))
BEGIN
CREATE PROCEDURE [dbo].[ELMAH_GetErrorXml]
(
@Application NVARCHAR(60),
@ErrorId UNIQUEIDENTIFIER
)
AS

SET NOCOUNT ON

SELECT
[AllXml]
FROM
[ELMAH_Error]
WHERE
[ErrorId] = @ErrorId
AND
[Application] = @Application
END

最佳答案

您收到该错误,因为这不是检查对象(过程)是否存在的权利,如果不存在则创建它。尝试这样的事情。

IF NOT EXISTS (SELECT *
FROM sys.objects
WHERE object_id = Object_id(N'[dbo].[ELMAH_GetErrorXml]')
AND type IN ( N'P', N'PC' ))
BEGIN
EXEC('CREATE PROCEDURE [dbo].[Elmah_geterrorxml] (@Application NVARCHAR(60),
@ErrorId UNIQUEIDENTIFIER)
AS
BEGIN
SET NOCOUNT ON

SELECT [AllXml]
FROM [ELMAH_Error]
WHERE [ErrorId] = @ErrorId
AND [Application] = @Application
END')
END

但简单的方法是
IF EXISTS (SELECT *
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA = 'dbo'
AND ROUTINE_NAME = 'ELMAH_GetErrorXml')
BEGIN
DROP PROCEDURE [dbo].[Elmah_geterrorxml]
END

GO

CREATE PROCEDURE [dbo].[Elmah_geterrorxml] (@Application NVARCHAR(60),
@ErrorId UNIQUEIDENTIFIER)
AS
BEGIN
SET NOCOUNT ON

SELECT [AllXml]
FROM [ELMAH_Error]
WHERE [ErrorId] = @ErrorId
AND [Application] = @Application
END

关于sql - SET 附近的语法不正确。期待外部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26869531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com