簡體   English   中英

無法將表值函數的結果分配給表變量

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM