0

次の形式の PL-SQL コードがあるとします。

DECLARE
  v_glob VARCHAR2(4000) := q'<
  DECLARE xyz VARCHAR2(7); BEGIN DBMS_OUTPUT.PUT_LINE('test45654645'); END;
  >';
BEGIN
  DBMS_OUTPUT.PUT_LINE(v_glob);
  EXECUTE IMMEDIATE (v_glob);
  -- What was the value of xyz here?
END;

スコープをごまかしてそれらの値を保持する方法はありますか? 私の目的では、通常の方法で実行できる場合は、v_glob に余分なコードを追加することは許容されます。

Oracle のドキュメントでは、これは不可能であるかのように見えますが、私が理解しているように、そうすべきではありません。私が見ていない巧妙な回避策はありますか?

4

1 に答える 1

1
DECLARE
  v_glob VARCHAR2(4000) := q'<
  DECLARE 
    xyz VARCHAR2(7) := 'hidden!'; 
  BEGIN 
    DBMS_OUTPUT.PUT_LINE('test45654645'); 
    :output := xyz;
  END;
  >';
  v_output varchar2(7);
BEGIN
  DBMS_OUTPUT.PUT_LINE(v_glob);
  EXECUTE IMMEDIATE (v_glob) using out v_output;
  -- What was the value of xyz here?
  DBMS_OUTPUT.PUT_LINE(v_output);
END;
于 2013-10-31T18:52:04.113 に答える