我有存储过程A并希望通过传递@mydate
参数从A调用存储过程B.存储过程B将返回一个行集,我可以在程序A中进一步使用该行集。
我在谷歌上研究了这个,但没有使用临时表就找不到任何东西。有一个简单的方法来获得这个没有临时表。
P.S。:我试图使用存储过程作为A并轻松地使用B函数来完成此操作。但是想知道我是否只能通过使用存储过程来完成它。
答案 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;"