以下是代码;
SET @QUERY = '
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
--
CREATE PROCEDURE [dbo].[sp_sp_duration_create_sp_duration_data_log]
@sp_name varchar(100),
@duration int,
@details varchar(250)
AS
BEGIN
IF @duration > 100
Begin
INSERT INTO [sp_duration_logs]
([sp_name]
,[duration]
,[details])
VALUES
(@sp_name
,@duration
,@details)
END
END
';
EXECUTE('USE ['+@DBNAME+']; '+@QUERY);
当我尝试执行此t-sql命令时,出现错误:
Msg 111,Level 15,State 1,Procedure sp_sp_duration_create_sp_duration_data_log,第16行'CREATE / ALTER PROCEDURE'必须是查询批处理中的第一个语句。
我认为我需要在查询中使用'GO',但是当我使用GO时会发生另一个错误。 (名为“GO”的无效对象或其他内容)。
答案 0 :(得分:0)
SET @QUERY = 'SET ANSI_NULLS ON GO
SET QUOTED_IDENTIFIER ON GO
//your code
';
EXECUTE('USE ['+@DBNAME+'] GO '+@QUERY);
答案 1 :(得分:0)
试试这个
SET @QUERY = '
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[sp_sp_duration_create_sp_duration_data_log]
@sp_name varchar(100),
@duration int,
@details varchar(250)
AS
BEGIN
IF @duration > 100
Begin
INSERT INTO [sp_duration_logs]
([sp_name]
,[duration]
,[details])
VALUES
(@sp_name
,@duration
,@details)
END
END ';
EXECUTE('USE ['+@DBNAME+']; '+@QUERY);