我无法在存储过程中调用存储过程时建立正确的语法。我认为这种语法是正确的:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[newProc](
@param1 varchar(50),
@param2 nvarchar(2000),
@param3 int,
@param4 int,
@param5 int,
@param6 int
)
AS
BEGIN
SET NOCOUNT ON;
EXEC [dbo].[externProc1] @param1, @param2;
GO
EXEC [dbo].[externProc2] @param3, @param4;
GO
EXEC [dbo].[insertProc3] @param5, @param6;
GO
END
GO
但是当我尝试这个时,我会继续 “''附近的语法不正确必须声明标量变量@param3。 必须声明标量变量@ param5。“
使用其他存储过程中的参数调用存储过程的正确语法是什么?
答案 0 :(得分:2)
T-SQL中的GO
关键字表示t-sql语句块结束并执行该块。这意味着在一个块中定义的变量对于在使用GO
结束/执行该块之后发生的语句不再“在范围内”。
GO实际上不是一个transact sql语句:
http://msdn.microsoft.com/en-us/library/ms188037(v=sql.105).aspx
用户必须遵守批次规则。例如,任何执行 批处理中的第一个语句必须包含后的存储过程 EXECUTE关键字。本地(用户定义)变量的范围是 限制为批次,并且在GO命令后无法引用。