ストアド プロシージャを使用して、結果セットから整数列の値をローカル変数にフェッチし、そこで操作してから結果セットの列に書き戻すことは可能ですか?
もしそうなら、構文はどのようになりますか?
ストアド プロシージャを使用して、結果セットから整数列の値をローカル変数にフェッチし、そこで操作してから結果セットの列に書き戻すことは可能ですか?
もしそうなら、構文はどのようになりますか?
次の行に沿った何かがうまくいくはずです。
DECLARE @iSomeDataItem INT
SELECT @iSomeDataItem = TableColumName
FROM TableName
WHERE ID = ?
--Do some work on the variable
SET @iSomeDataItem = @iSomeDataItem + 21 * 2
UPDATE TableName
SET TableColumName = @iSomeDataItem
WHERE ID = ?
この種の実装の欠点は、特定のレコードでのみ動作することですが、これはあなたが達成しようとしているものかもしれません.
なぜupdateステートメント内で操作を行わないのですか?変数にロードして操作し、保存する必要はありません。
update TableName
SET TableColumnName=TableColumnName + 42 /* or what ever manipulation you want */
WHERE ID = ?
また、
@iSomeDataItem + 21 * 2
と同じです:
@iSomeDataItem + 42
次のほとんどが当てはまらない限り、関数のアイデアは不要な追加の手順です。
1)この計算は多くの場所で使用する必要があります2)計算は複雑です3)計算は変更される可能性があります
あなたが探しているのは、おそらく、他の組み込み関数と同様に SQL で使用できるユーザー定義関数のラインに沿ったものです。
これが DB2 でどのように機能するかはわかりませんが、Oracle の場合は次のようになります。
Create or replace Function Decrement (pIn Integer)
return Integer
Is
Begin
return pIn - 1;
end;
これを SQL で使用できます。
Select Decrement (43)
From Dual;
「究極の答え」(42)を返す必要があります。
お役に立てれば。