select ステートメントで 2 つの関数呼び出しの結果を返すことは可能ですか?
一時テーブルに順番に挿入する2つのcsv文字列を受け入れる以下のTSQLを切り取りました。dbo.Split
文字列を受け取り、値のテーブルを返します。
スニペット
DECLARE @MeasureCategoryIDs as nvarchar(100)
DECLARE @SnapshotIDs as nvarchar(100)
SET @MeasureCategoryIDs = '1,2,3'
SET @SnapshotIDs = '9,8,7'
CREATE TABLE #tmpMeasureCats
(
MeasureCatID int PRIMARY KEY NOT NULL,
SnapshotID int NOT NULL
)
INSERT INTO #tmpMeasureCats
SELECT value FROM dbo.Split(',',@MeasureCategoryIDs), value FROM dbo.Split(',',@SnapshotIDs)
DROP TABLE #tmpMeasureCats
スプリット
ALTER FUNCTION [dbo].[Split]
( @Delimiter varchar(5),
@List varchar(8000)
)
RETURNS @TableOfValues table
( RowID smallint IDENTITY(1,1),
[Value] varchar(50)
)
AS
BEGIN
DECLARE @LenString int
WHILE len( @List ) > 0
BEGIN
SELECT @LenString =
(CASE charindex( @Delimiter, @List )
WHEN 0 THEN len( @List )
ELSE ( charindex( @Delimiter, @List ) -1 )
END
)
INSERT INTO @TableOfValues
SELECT substring( @List, 1, @LenString )
SELECT @List =
(CASE ( len( @List ) - @LenString )
WHEN 0 THEN ''
ELSE right( @List, len( @List ) - @LenString - 1 )
END
)
END
RETURN
END
両方の csv 文字列で分割関数を呼び出した結果
上記のスニペットを実行すると、以下のエラーが発生します
メッセージ 156、レベル 15、状態 1、行 15
キーワード「FROM」付近の構文が正しくありません。
私が探しているのは以下のとおりです
Col1 Col2
1 9
2 8
3 7
Insert の 2 つの値を返すために Select ステートメントを指定する別の方法はありますか?