首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >T-SQL乱序插入

T-SQL乱序插入
EN

Stack Overflow用户
提问于 2010-05-17 23:40:07
回答 2查看 483关注 0票数 1

基本上,我有一个用户定义的Table type (用作表值变量),我在一个存储过程中引用它,它实际上只是调用另外两个存储过程,然后将这些值插入到table类型中。

Id估计

代码语言:javascript
运行
复制
INSERT INTO @tableValuedVariable (var1, var2, var3, var4, var5)
         EXEC [dbo].StoredProcedure1;

INSERT INTO @tableValuedVariable (var1, var2, var5)
         EXEC [dbo].StoredProcedure2;

你可能已经知道我要问什么了。基本上,StoredProcedure2只返回表中设置为保存的一小部分值,我希望其他变量只为null (定义为默认值)。只有SQL在抱怨我没有指定该表的所有可用变量。

由于显而易见的原因,返回数据集可能相当大,因此我希望避免循环等。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-17 23:44:39

您已经在INSERT子句中列出了所有列,以匹配存储过程中的所有列。

现在,如果存储过程返回var1, var2, var5,那么如果它们为NULLable,则不需要在INSERT子句中指定var3, var4。(编辑:当然,正如Mike Burton指出的那样,如果列不为空,它将失败)

如果存储过程返回var1, var2, var3, var4, var5,那么在INSERT子句中需要全部5:不能忽略存储过程中的列而允许它们为默认值。

您可以将存储的proc更改为udf和SELECT var1, var2, var5 FROM mynewUDF()

票数 1
EN

Stack Overflow用户

发布于 2010-05-17 23:48:20

这对我来说很有效:

代码语言:javascript
运行
复制
CREATE PROCEDURE prc_test_1
AS
        SELECT  1 AS id, 2 AS id2

GO

CREATE PROCEDURE prc_test_2
AS
        SELECT  1 AS id

GO

DECLARE @tv TABLE (id INT, id2 INT)

INSERT
INTO    @tv
EXEC    prc_test_1

INSERT
INTO    @tv (id)
EXEC    prc_test_2

SELECT  *
FROM    @tv
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2850479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档