Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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 server SQL Server嵌套返回代码_Sql Server - Fatal编程技术网

Sql server SQL Server嵌套返回代码

Sql server SQL Server嵌套返回代码,sql-server,Sql Server,我试图通过嵌套过程向上传递返回代码。基本过程接受多个参数并设置返回代码。我正在编写一个包装器,它构建对基本过程的调用并执行它。我希望包装器能够访问基本过程中的返回代码。我尝试过EXEC(@CMD)&SP_EXECUTESQL,但似乎无法获取返回代码。如果我能帮助的话,我真的不想以任何方式改变基本过程。这基本上是Ola Hallengrens备份的包装器,它从表中读取参数,我知道其他人已经实现了这些参数,所以应该有人能找到解决方案 可以在变量中捕获存储过程的返回值。然后,您可以随意使用这些变量(例

我试图通过嵌套过程向上传递返回代码。基本过程接受多个参数并设置返回代码。我正在编写一个包装器,它构建对基本过程的调用并执行它。我希望包装器能够访问基本过程中的返回代码。我尝试过EXEC(@CMD)&SP_EXECUTESQL,但似乎无法获取返回代码。如果我能帮助的话,我真的不想以任何方式改变基本过程。这基本上是Ola Hallengrens备份的包装器,它从表中读取参数,我知道其他人已经实现了这些参数,所以应该有人能找到解决方案

可以在变量中捕获存储过程的返回值。然后,您可以随意使用这些变量(例如,使用输出变量向上游传递它们,或者在
会话\u上下文()中设置它们。


为什么不使用输出参数而不是返回代码?然后你就不用再拘泥于使用int数据类型了,你可以完全控制一切。我真的不想对基本过程进行更改,除非我不得不这样做。正如我所说,它是Ola Hallengrens数据库备份过程的包装器,因此最好不要在每个版本中都对其进行编辑。因此,试图根据模糊的解释和注释进行疯狂猜测,您是否使用动态sql调用它,并为每个数据库构建新的动态sql字符串?如果是这种情况,则必须使用参数化的动态sql,然后才能返回值。似乎付出了很多努力却没有什么好处。我正在构建一个要执行的命令,这就是为什么我在执行字符串时说EXEC(@CMD),@RETVAL=(@CMD)是无效语法。也许我当时误解了你。您说过您有嵌套的存储过程。执行动态SQL不是一个嵌套的过程调用,所以我认为您可能正在尝试使用动态SQL来获取返回值。
create proc dbo.test
as
return 1

declare @retval int
exec  @retval = dbo.test 

select @retval