[英]Can't assign result of table valued function to table variable
我有这个功能:
Create function [dbo].[Split]
(
@String nvarchar(max)
)
returns @SplittedValues table
(
Id nvarchar(50) primary key
)
在存储过程中,我尝试获取此函数调用的结果并将其插入表变量中:
DECLARE @SplittedValues table
(
[Id] nvarchar(50) primary key
);
INSERT INTO @SplittedValues([Id])
VALUES (SELECT * FROM [dbo].[Split](@Commands);
我懂了
“ SELECT”附近的语法不正确
数据库版本为SQl Server 2012
该错误信息是令人误解的。 如果您确实想在INSERT .. VALUES()
子句中使用(scalar!)子选择,则必须添加其他括号:
INSERT INTO @SplittedValues([Id])
VALUES ((SELECT * FROM ...));
那将是“正确的”语法。 但是,就您而言,这毫无意义。 您希望将SELECT
的结果整体复制到@SplittedValues
表中。 因此,请尝试以下操作:
INSERT INTO @SplittedValues([Id])
SELECT * FROM [dbo].[Split](@Commands);
您的语法不正确。 它应该是
INSERT INTO @SplittedValues([Id])
SELECT * FROM [dbo].[Split](@Commands)
当您在查询中写入一些有限值列表时,应使用语法insert into table_name (columns_list) values (values_list)
。
但是,当您从某些select获得的结果insert into table_name (columns_list) select values from another_table
进行insert into table_name (columns_list) select values from another_table
,它被insert into table_name (columns_list) select values from another_table
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.