Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 调用在另一个存储过程中返回多个表结果的存储过程_Sql_Sql Server_Stored Procedures - Fatal编程技术网

Sql 调用在另一个存储过程中返回多个表结果的存储过程

Sql 调用在另一个存储过程中返回多个表结果的存储过程,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,是否可以在另一个存储过程sp2中调用存储过程sp1,该存储过程将返回多个表结果 我必须在执行的存储过程sp2中使用返回的结果 据我所知,这是不可能的。但我想确定一下 是否有其他方法可以满足此类要求?为此,您可以在SP2内创建一个临时表,并在SP1中使用它。为此,您可以在SP2内创建一个临时表,并在SP1中使用它。您可以对一个结果集使用INSERT INTO EXEC 但这对多个结果集不起作用 你不能把它套起来。SP2可以在调用SP1时使用它。但是如果SP3调用SP2,它就不能做同样的事情 如果要

是否可以在另一个存储过程sp2中调用存储过程sp1,该存储过程将返回多个表结果

我必须在执行的存储过程sp2中使用返回的结果

据我所知,这是不可能的。但我想确定一下


是否有其他方法可以满足此类要求?

为此,您可以在SP2内创建一个临时表,并在SP1中使用它。为此,您可以在SP2内创建一个临时表,并在SP1中使用它。您可以对一个结果集使用INSERT INTO EXEC


但这对多个结果集不起作用

你不能把它套起来。SP2可以在调用SP1时使用它。但是如果SP3调用SP2,它就不能做同样的事情

如果要返回多个结果集,则需要将结果插入表中。然后外部SP就可以使用这些表了

如果外部SP创建临时表CREATE table temp,则内部SP可以将其视为插入

同样,你也可以使用一张永久的桌子。我建议使用一个名为SPID的列,并使用@SPID作为插入的值@@spid唯一地标识每个会话。但是,在插入表之后,您必须记得进行清理

所有这些选项都假定您可以修改两个SP。如果您不能,我不确定您是否可以在SQL Server中执行此操作。

您可以对一个结果集使用INSERT INTO EXEC


但这对多个结果集不起作用

你不能把它套起来。SP2可以在调用SP1时使用它。但是如果SP3调用SP2,它就不能做同样的事情

如果要返回多个结果集,则需要将结果插入表中。然后外部SP就可以使用这些表了

如果外部SP创建临时表CREATE table temp,则内部SP可以将其视为插入

同样,你也可以使用一张永久的桌子。我建议使用一个名为SPID的列,并使用@SPID作为插入的值@@spid唯一地标识每个会话。但是,在插入表之后,您必须记得进行清理


所有这些选项都假定您可以修改两个SP。如果您不能,我不确定您是否可以在SQL Server内部执行此操作。

您确定吗?我认为,如果它是在SP2内部SP中创建的,那么它的范围将限制在SP2的持续时间内。这意味着当执行返回到外部SP的SP1时,它将不再存在。因此,需要在SP1中创建临时表?您可以创建一个临时表,但不能创建任何临时表,创建一个正常的临时表,并在使用它后删除它,因为它不是临时表@table=表变量。表=临时表。表=表。如果你指的是一张桌子,在使用后你会掉下来,不要称它为临时桌子,那意味着其他东西。此外,这样做还有一个主要问题:如果两个单独的会话执行同一个SP,则无法创建两次表。如果将SP2更改为返回表的函数,则OP的示例将返回3个结果集。无法生成返回3个结果集的表值函数。是否确定?我认为,如果它是在SP2内部SP中创建的,那么它的范围将限制在SP2的持续时间内。这意味着当执行返回到外部SP的SP1时,它将不再存在。因此,需要在SP1中创建临时表?您可以创建一个临时表,但不能创建任何临时表,创建一个正常的临时表,并在使用它后删除它,因为它不是临时表@table=表变量。表=临时表。表=表。如果你指的是一张桌子,在使用后你会掉下来,不要称它为临时桌子,那意味着其他东西。此外,这样做还有一个主要问题:如果两个单独的会话执行同一个SP,则无法创建两次表。如果将SP2更改为返回表的函数,则OP的示例将返回3个结果集。不能生成返回3个结果集的表值函数。但这对多个结果集不起作用。注意:实际上,它对多个结果集起作用,但前提是它们具有兼容的列定义,即它们可以联合在一起,它们实际上是。但这对多个结果集不起作用。:实际上,它对多个结果集起作用,但只有当它们具有兼容的列定义时,也就是说,如果它们可以联合在一起,它们才会起作用。