当我尝试执行本文末尾给出的脚本时,我收到错误。我的要求是检查程序是否存在,然后在存在的情况下将其删除并最终创建程序。
如何使用单个脚本文件执行此操作?
程序Proc_GenerateTestData。 'CREATE / ALTER PROCEDURE'必须是查询批处理中的第一个语句。 SQL2.sql 12 1
始终抛出错误的SQL脚本如下所示。
IF OBJECT_ID('dbo.Proc_GenerateTestData', 'p') IS NOT NULL
BEGIN
DROP PROCEDURE dbo.Proc_GenerateTestData
END
CREATE PROCEDURE dbo.Proc_GenerateTestData @numberOfRecords INT = 100
AS
--drop table #temp1
DECLARE @currentTime AS TIME = CAST(GETDATE() AS TIME);
DECLARE @currentWorkShiftDate AS DATETIME = CAST(CAST(GETDATE() AS DATE) AS DATETIME);
DECLARE @startTime TIME,
@lastShiftStartTime TIME;
DECLARE @tenantId AS UNIQUEIDENTIFIER = (SELECT TOP (1)
Tenants.Id
FROM Tenants
ORDER BY Tenants.Id ASC);
DECLARE @workshiftId INT,
@lastShiftStartDate DATETIME;
--more statements for this procedure follow
答案 0 :(得分:1)
正如错误明确所述 - CREATE PROCEDURE
必须是查询批处理中的第一个语句。
这不是这种情况,因为你事先检查了DROP
。
您需要更改脚本,以便CREATE PROCEDURE
语句确实是查询批处理中的第一个。如果您在SQL Server Management Studio中运行此操作,只需在GO
之前添加CREATE
分隔符。