gpt4 book ai didi

sql - (SQL Server) SQL 不允许在检查过程是否存在后创建过程

转载 作者:搜寻专家 更新时间:2023-10-30 20:37:49 28 4
gpt4 key购买 nike

下面是我试图用来检查存储过程是否不存在然后创建过程的 sql。它会抛出一个错误:Incorrect syntax near the keyword 'PROCEDURE'

IF NOT EXISTS (SELECT * FROM SYS.procedures WHERE name = N'[Reports].[usp_EMS_Stats_DashboardPendingBookingSel]')
BEGIN

CREATE PROCEDURE [Reports].[usp_EMS_Stats_DashboardPendingBookingSel] @OrganisationID INT, @Category2 varchar(30) = NULL
AS
BEGIN
--SOME SQL..
END
END

最佳答案

架构未包含在名称中; name 只是 usp_EMS_Stats_DashboardPendingBookingSel,您可以通过以下方式检查架构

schema_id = SCHEMA_ID('Reports')

旁白:请注意,它实际上是 sys.procedures,而不是 SYS.procedures - 如果服务器配置为区分大小写,这一点很重要。

ALTER PROC/CREATE PROC 必须是批处理中的第一条语句,因此您需要在执行此操作时有点创意。在需要可重新运行的创建或更新脚本的一般情况下,以下方法有效:

IF OBJECT_ID(N'[Reports].[usp_EMS_Stats_DashboardPendingBookingSel]') IS NULL
BEGIN
EXEC('CREATE PROCEDURE [Reports].[usp_EMS_Stats_DashboardPendingBookingSel] AS BEGIN PRINT ''impl'' END');
END
GO
ALTER PROCEDURE [Reports].[usp_EMS_Stats_DashboardPendingBookingSel] @OrganisationID INT, @Category2 varchar(30) = NULL
AS
BEGIN
PRINT 'HI'; -- your actual code here
END

关于sql - (SQL Server) SQL 不允许在检查过程是否存在后创建过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32625968/

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