[英]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.