下のW.r.tコードSYS_REFCURSORは2つのテーブルを結合するselectにあるため、基本となるテーブルの%ROWTYPEとしてfetch-into-variableの型を宣言することはできません。すなわち私はL_RECORDのT%のROWTYPE私はSYS_REFCURSORに返される列を持つ静的テーブルRを定義し、L_RECORD Rの%のROWTYPEとして宣言する必要はありません。もちろん、弱く型付けされたSYS_REFCURSORである変数の%ROWTYPEを宣言する方法は?
---
DECLARE
P_RS SYS_REFCURSOR;
L_RECORD P_RS%ROWTYPE;
BEGIN
CAPITALEXTRACT(
P_RS => P_RS
);
OPEN P_RS;
LOOP
BEGIN
FETCH P_RS INTO L_RECORD;
EXIT WHEN P_RS%NOTFOUND;
...
EXCEPTION
WHEN OTHERS THEN
...
END;
END LOOP;
CLOSE P_RS;
END;
--------
CREATE or REPLACE PROCEDURE CAPITALEXTRACT
(
p_rs OUT SYS_REFCURSOR
) AS
BEGIN
OPEN p_rs for
select t.*,tminusone.*, f(t.cash), g(t.cash) FROM T t, TMINUSONE tminusone
where t.ticket=tminusone.ticket;
END CAPITALEXTRACT;
として宣言することはできません。
したがって、質問: 弱い型指定のSYS_REFCURSORである変数の%ROWTYPEを宣言するにはどうすればよいですか?
驚くべき男、私はこれを行う方法を1年探しており、これは最高の説明だ。注:私はCAPITALEXTRACT(P_RS => P_RS)を必要としませんでした。ライン。 (実際にはエラーが発生して何が起こったのか分からなかったのでコメントアウトしてからpl/sqlが栄光に走った) – armyofda12mnkeys
@ armyofda12mnkeys - 助けてくれてうれしい。 CAPITALEXTRACTはこの問題に特有の機能であり、ソリューション固有のものではありませんので、心配しないでください。 –