是否可以使用存储过程作为参数

问题描述:

INSERT INTO TEMP_TABLE (aNumber, aDate) VALUES ((aSproc param1, param2) , myDate)

我需要传递存储过程,并将参数作为插入语句的参数传递。这可能吗?是否可以使用存储过程作为参数

+3

你应该尝试一下,让我们知道... – jcho360 2013-04-24 16:51:36

+0

我做了尝试,我无法使它工作,这就是为什么我发布这个问题。 – MrCoincidence 2013-04-24 16:56:03

+0

什么样的人会投下一个问题? – MrCoincidence 2013-04-24 17:42:52

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

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

另外发布你的SP将帮助我们调试它。

+0

谢谢约翰。该sproc返回一个单一的值,如果我插入与INSERT INTO语句只有一列它的作品。我无法弄清楚的是如何在SQL Server抱怨的情况下在INSERT INTO语句中使用sproc AND另一个参数。 因此,它不是我遇到的问题,它将它用作INSERT INTO语句的参数,我遇到了麻烦... – MrCoincidence 2013-04-24 17:02:06

+1

您可以随时使用变量来存储SP的结果然后将该变量设置为INSERT语句。 – usumoio 2013-04-24 17:07:37

+0

@MrCoincidence但是,这是很难帮助解决而不看你的存储过程 – usumoio 2013-04-24 17:29:43