在存储过程中调用存储过程

时间:2015-09-27 02:44:12

标签: sql-server sql-server-2008 stored-procedures

我在SQL Server 2008中有一个存储过程。在这个SP中,我需要调用另一个并传入两个参数,如下所示: 这将在父SP

的末尾执行
EXEC [Testing].[InsertNewValues] @UserId, @RequestedById

此SP看起来像这样:

ALTER PROCEDURE [Testing].[InsertNewValues]
@UserId int,
@RequestedById int
 AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Do something with two parameters

END

然而,当我运行我的项目时,我收到错误:

  

其他信息:程序或功能'InsertNewValues'   期望参数'@RequestedById',这是未提供的。

我试过

EXEC [Testing].[InsertNewValues](@UserId, @RequestedById)
EXEC [Testing].[InsertNewValues] @UserId @RequestedById
EXEC [Testing].[InsertNewValues] (@UserId, @RequestedById)

但没有运气,有人可以告诉我这里我做错了什么吗?

2 个答案:

答案 0 :(得分:1)

您可以从一个SP调用任意数量的SP(您可以将其扩展到其他SP - 嵌套)。您也可以通过SP呼叫功能。但是从你的代码,调用行和错误..所有表明你没有正确调用你的SP,你显然缺少参数分隔符。这可能是一个错字。

您的参数之间错过,

更改EXEC [Testing].[InsertNewValues] @UserId @RequestedById

EXEC [Testing].[InsertNewValues] @UserId, @RequestedById

答案 1 :(得分:0)

EXEC [Testing].[InsertNewValues](@UserId, @RequestedById)
EXEC [Testing].[InsertNewValues] @UserId @RequestedById
EXEC [Testing].[InsertNewValues] (@UserId, @RequestedById)

EXEC [Testing].[InsertNewValues] @UserId, @RequestedById
EXEC [Testing].[InsertNewValues] @UserId, @RequestedById -- missing comma here
EXEC [Testing].[InsertNewValues] @UserId, @RequestedById

请尝试,我想我可能不需要知道为什么它的3次......我的假设是你可能会用重复的方式测试你的验证。