【发布时间】:2016-01-09 19:02:35
【问题描述】:
下面是代码;
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 命令时,我得到一个错误:
消息 111,级别 15,状态 1,程序 sp_sp_duration_create_sp_duration_data_log,第 16 行“创建/更改” PROCEDURE' 必须是查询批处理中的第一条语句。
我想我需要在 query 中使用 'GO' ,但是当我使用 GO 时会出现另一个错误。 (名为“GO”或其他名称的无效对象)。
【问题讨论】:
-
您不能在动态 SQL 语句中使用
GO,因为GO不是有效的 T-SQL 命令,请参阅:msdn.microsoft.com/en-us/library/ms188037.aspxGO is not a Transact-SQL statement; it is a command recognized by the sqlcmd and osql utilities and SQL Server Management Studio Code editor.。
标签: sql sql-server tsql stored-procedures dynamic-sql