次のように、select ステートメントと update ステートメントを実行する proc があります。データを一時テーブルに入れる更新ステートメントと選択ステートメントを単一のSQL選択ステートメントに組み込む必要があります。
これは可能ですか?
'
次のように、select ステートメントと update ステートメントを実行する proc があります。データを一時テーブルに入れる更新ステートメントと選択ステートメントを単一のSQL選択ステートメントに組み込む必要があります。
これは可能ですか?
'
はい:
CREATE TABLE TableA
(
valueA int
)
INSERT INTO
TableA
VALUES
(1),
(2),
(3)
GO
CREATE PROCEDURE test_procedure (@in_value int)
AS
BEGIN
--insert into temp table
SELECT
@in_value [out_value]
INTO
#TestTable
-- update with join on temp table
UPDATE
T
SET
T.[out_value] = 2
FROM
#TestTable T
INNER JOIN TableA A on A.valueA = T.out_value
WHERE
A.valueA = 1
-- update with join on temp table again
UPDATE
T
SET
[out_value] = 3
FROM
#TestTable T
INNER JOIN TableA A on A.valueA = T.out_value
WHERE
A.valueA = 2
--select results including the original "in_value"
SELECT
*,
@in_value [in_value]
FROM
TableA A
LEFT JOIN #TestTable T on T.out_value = A.valueA
END;
GO
--execute stored procedure
EXEC test_procedure 1
ユニオンを使用して1つの方法を見つけました。これは少し奇妙ですが、他に何も見つからないので、この方法で解決しました