从具有多个输出集的存储过程插入到表中不起作用

时间:2016-02-12 05:21:30

标签: sql sql-server tsql stored-procedures sql-server-2012

我需要从存储过程输出中填充表。我试过下面的查询。

out.println("<html>");
out.println("<form action=\"SubmitTimesheet\">");
if (manager != null)
    out.print("<input name=\"manager\" type=\"hidden\" value=\"" +
              StringEscapeUtils.escapeHtml4(manager) + "\">");

但我在执行期间遇到了错误:

  

无法嵌套INSERT EXEC语句。

     

列名或提供的值数与表不匹配   定义

我发现发生错误是因为存储过程有多个结果集,如下所示:

DECLARE @Result AS TABLE (ouid int, value1 nvarchar(max), value2 nvarchar(max), value3 nvarchar(max))

insert into @Result (value1 ,value2, value3)
    exec [USP_Getofficevalues] 1, NULL, NULL

如何处理上述情况?谢谢你的帮助。

2 个答案:

答案 0 :(得分:3)

由于返回的结果集都是单列和相同类型,因此您可以声明表变量并存储结果:

declare @r table
(
    id int identity,
    value int
)

insert into @r(value)
exec [USP_Getofficevalues] 1, NULL,NULL

之后,您只需将@r转置到@result表格中。

答案 1 :(得分:1)

检查您的程序USP_Getofficevalues。

我认为如果您在调用时使用插入,则不允许使用插入