如果 CREATE/ALTER 不是第一条语句,脚本总是会抛出错误
Script always throws an error if CREATE/ALTER is not first statement
当我尝试执行此 post 末尾给出的脚本时出现错误。我的要求是检查过程是否存在,如果存在则将其删除,最后创建过程。
如何使用单个脚本文件执行此操作?
Procedure Proc_GenerateTestData. 'CREATE/ALTER PROCEDURE' must be the first statement in a query batch. 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
正如错误 清楚地 所说 - CREATE PROCEDURE
必须是查询批处理中的第一个语句。
这里不是这种情况,因为您事先检查了 DROP
。
您需要更改脚本,使 CREATE PROCEDURE
语句真正成为查询批处理中的 first。如果您在 SQL Server Management Studio 中 运行 这个,只需在 CREATE
.
之前添加一个 GO
分隔符
当我尝试执行此 post 末尾给出的脚本时出现错误。我的要求是检查过程是否存在,如果存在则将其删除,最后创建过程。
如何使用单个脚本文件执行此操作?
Procedure Proc_GenerateTestData. 'CREATE/ALTER PROCEDURE' must be the first statement in a query batch. 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
正如错误 清楚地 所说 - CREATE PROCEDURE
必须是查询批处理中的第一个语句。
这里不是这种情况,因为您事先检查了 DROP
。
您需要更改脚本,使 CREATE PROCEDURE
语句真正成为查询批处理中的 first。如果您在 SQL Server Management Studio 中 运行 这个,只需在 CREATE
.
GO
分隔符