如何从没有临时表的另一个存储过程调用存储过程(带参数)

时间:2011-12-07 20:31:13

标签: sql-server-2008 stored-procedures

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

我在谷歌上研究了这个,但没有使用临时表就找不到任何东西。有一个简单的方法来获得这个没有临时表。

P.S。:我试图使用存储过程作为A并轻松地使用B函数来完成此操作。但是想知道我是否只能通过使用存储过程来完成它。

5 个答案:

答案 0 :(得分:14)

 Create PROCEDURE  Stored_Procedure_Name_2
  (
  @param1 int = 5  ,
  @param2 varchar(max),
  @param3 varchar(max)

 )
AS


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  

答案 1 :(得分:8)

您只需调用执行命令即可。

EXEC spDoSomthing @myDate

修改

因为你想要返回数据......这有点困难。您可以使用用户定义的函数来返回数据。

答案 2 :(得分:4)

您可以在存储过程B中调用这样的存储过程。

CREATE PROCEDURE spA
@myDate DATETIME
AS
    EXEC spB @myDate

RETURN 0

答案 3 :(得分:1)

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

DECLARE @T TABLE
(
TABLE DEFINITION
)
.
.
.
INSERT INTO @T
EXEC B @MYDATE

然后你继续操作。

答案 4 :(得分:-2)

您可以使用EXECUTE命令从另一个存储过程调用存储过程。

假设你的程序是X.然后在X中你可以使用

EXECUTE PROCEDURE Y () RETURNING_VALUES RESULT;"