【问题标题】:Can a stored procedure be used as a parameter存储过程可以用作参数吗
【发布时间】:2013-04-24 16:49:48
【问题描述】:
INSERT INTO TEMP_TABLE (aNumber, aDate) VALUES ((aSproc param1, param2) , myDate)

我需要传递带有参数的存储过程作为插入语句的参数。这可能吗?

【问题讨论】:

  • 您应该尝试一下并告诉我们...
  • 我试过了,但我不能让它工作,这就是我发布这个问题的原因。
  • 什么样的人会否决一个问题?

标签: sql-server stored-procedures parameters insert


【解决方案1】:

这将取决于存储过程返回的内容。存储过程返回由 SP 中发出的最后一次选择产生的表。因此,如果您的 SP 以 SELECT NULL 结尾,那么您的 SP 将返回 NULL,然后您的插入将返回 NULL。对于你必须做的事情,你必须确保存储过程只返回一个值,即一个只有一行和一列的表。

这样做的原因是因为您的 insert 期望单个值成为其 value 子句的一部分,并且您可能返回多行和多列。您可以通过以SELECT 1 结束您的SP 来测试这一点,这会将int 返回到您的插入中,然后插入可以理解为它的值子句的一部分的值类型。

同时发布您的 SP 将有助于我们对其进行调试。

【讨论】:

  • 谢谢约翰。 sproc 返回一个值,如果我在 INSERT INTO 语句中只使用一列进行插入,它就可以工作。我想不通的是如何在 INSERT INTO 语句中使用 sproc 和另一个参数而没有 SQL Server 抱怨。所以,这不是我遇到问题的存储过程,而是将它用作我遇到问题的 INSERT INTO 语句的参数......
  • 您总是可以使用变量来存储 SP 的结果,然后将变量设置到 INSERT 语句中。
  • @MrCoincidence 但这很难在没有看到您的存储过程的情况下帮助解决
  • 再次感谢约翰。我刚刚更改了 sproc 以返回 BOTH 值,现在它正在工作......我非常感谢你的回答!
  • @MrCoincidence 很酷,如果您可以发布您使用的答案或发送一些赞成票或其他任何内容,以便为下一个程序员留下记录。干杯老兄。
猜你喜欢
  • 2010-11-02
  • 2016-12-17
  • 1970-01-01
  • 2019-08-01
  • 2010-11-01
  • 2010-12-10
  • 2011-03-17
  • 2020-04-03
相关资源
最近更新 更多