gpt4 book ai didi

sql-server-2008 - 使用另一个存储过程中的参数调用存储过程的正确语法

转载 作者:行者123 更新时间:2023-12-02 02:10:31 26 4
gpt4 key购买 nike

我很难在存储过程中建立调用存储过程的正确语法。我认为这个语法是正确的:

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。”

使用另一个存储过程中的参数调用存储过程的正确语法是什么?

最佳答案

T-SQL 中的 GO 关键字表示一个 t-sql 语句 block 结束并执行该 block 。这意味着在一个 block 中定义的变量不再“在范围内”发生在该 block 结束/用 GO 执行后出现的语句。

GO其实不是transact sql语句:

http://msdn.microsoft.com/en-us/library/ms188037(v=sql.105).aspx

Users must follow the rules for batches. For example, any execution of a stored procedure after the first statement in a batch must include the EXECUTE keyword. The scope of local (user-defined) variables is limited to a batch, and cannot be referenced after a GO command.

关于sql-server-2008 - 使用另一个存储过程中的参数调用存储过程的正确语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13201516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com