3

PL/SQL で、「ソース」スキーマをパラメータとしてストアド プロシージャに渡したいと考えています。例えば:

BEGIN
    CURSOR my_cursor IS
      SELECT my_field FROM <schema>.my_table
...

「スキーマ」値を入力パラメーターからストアド プロシージャに取得したいと考えています。どうすればそれができるか知っている人はいますか?

PSこれがばかげた単純な質問である場合は申し訳ありませんが、私はPL/SQLが初めてで、いくつかの関数をすばやく作成する必要があります。

4

2 に答える 2

8

Mark Brady が言ったことに加えて、もう 1 つの動的 SQL オプションは、REF CURSOR を使用することです。サンプルコードにはカーソルが含まれているため、これが最も関連性があります。

PROCEDURE select_from_schema( the_schema VARCHAR2)
IS
  TYPE my_cursor_type IS REF CURSOR;
  my_cursor  my_cursor_type;
BEGIN
  OPEN my_cursor FOR 'SELECT my_field FROM '||the_schema||'.my_table';

  -- Do your FETCHes just as with a normal cursor

  CLOSE my_cursor;
END;
于 2008-11-10T19:32:21.963 に答える
3

これは、動的 SQL で行う必要があります。

DBMS_SQL パッケージまたは Execute Immediate ステートメントのいずれか。

FROM 句では変数を使用できません。

潜在的な解決策は

ALTER SESSION SET Current_Schema = '' <- 必要なスキーマ。

このコマンドは、デフォルトのスキーマを変更します。同じ名前のテーブルがたくさんある場合は、動的 SQL を保存して動的変更セッションを作成できます。

于 2008-11-10T19:26:26.030 に答える