如何在没有临时表的情况下从另一个存储过程中调用一个存储过程(带参数)?

25 人关注

我有一个存储过程A,想通过传递 @mydate 参数从A调用存储过程B。存储过程B将返回一个行集,我可以在过程A中进一步使用。

我在谷歌上研究了这个问题,但没有找到任何不使用临时表的方法。有没有一种简单的方法可以在没有临时表的情况下得到这个结果。

P.S.: 我试着用存储过程作为A,用函数作为B来完成这个任务,很容易。但我想知道我是否只能通过使用存储过程来完成。

1 个评论
dash
试试 stackoverflow.com/questions/209383/.. .--那里有你的确切问题。
sql-server-2008
stored-procedures
SQLNewBee
SQLNewBee
发布于 2011-12-08
5 个回答
Arun CM
Arun CM
发布于 2011-12-08
0 人赞同
 Create PROCEDURE  Stored_Procedure_Name_2
  @param1 int = 5  ,
  @param2 varchar(max),
  @param3 varchar(max)
DECLARE @Table TABLE
   /*TABLE DEFINITION*/
   id int,
   name varchar(max),
   address varchar(max)
INSERT INTO @Table
EXEC Stored_Procedure_Name_1 @param1 , @param2 = 'Raju' ,@param3 =@param3
SELECT id ,name ,address  FROM @Table
Ed B
Ed B
发布于 2011-12-08
0 人赞同

你可以直接调用Execute命令。

EXEC spDoSomthing @myDate

既然你想返回数据,那就有点困难了。你可以使用用户定义的函数来代替返回数据。

Nagu_R
Nagu_R
发布于 2011-12-08
0 人赞同

你可以像这样在存储过程B中调用存储过程。

CREATE PROCEDURE spA
@myDate DATETIME
EXEC spB @myDate
RETURN 0
Amir Keshavarz
Amir Keshavarz
发布于 2011-12-08
0 人赞同

你可以在过程A中创建表变量而不是临时表,执行过程B并通过以下查询插入临时表。

DECLARE @T TABLE
TABLE DEFINITION
INSERT INTO @T
EXEC B @MYDATE

而你则继续操作。