列a、b、c、d、eを持つテーブルがあるとします
列 a、b、および c のパラメーター値を受け取るプロシージャ/関数のパラメーターから列 d および e を更新する方法/構文はありますか。(手続き(a, b, c, out d, out e))
(カーソルを使用してすべての行を 1 つずつ反復する以外)?
Oracle の専門家の助けを借りて、次の解決策にたどり着きました。
CREATE TABLE testtable
(
a number,
b number,
c number,
d number
);
CREATE TYPE testobj AS OBJECT
(
x number,
y number
);
CREATE OR REPLACE FUNCTION testfun(a number, b number)
RETURN testobj IS
begin
return new testobj(x=>a+b, y=> a*b);
end;
INSERT INTO testtable VALUES (1,2,null,null);
INSERT INTO testtable VALUES (5,6,null,null);
UPDATE
(SELECT tt.*,
testfun1(a,b) fun_ret FROM testtable tt) talias
SET talias.c=talias.fun_ret.x,
talias.d=talias.fun_ret.y
;