2

次のストアド プロシージャ コードは、Oracle 11G で実行される DEV および TEST 環境では機能しますが、10G PROD 環境では機能しません。

まず、VARCHAR2 の任意の配列を保持するために、Oracle で独自のデータ構造を作成しました。

create or replace
type MAT_MULTIPLES_ARRAY as table of VARCHAR2(100);

手順コードは次のとおりです。

    create or replace PROCEDURE MAT_SUBMIT_JOB (v_multiples_columns_to_add IN our_schema.MAT_MULTIPLES_ARRAY)

    v_jobno number;
    v_job_name VARCHAR2(100);
    v_error_message VARCHAR2(32000);

    begin

    v_job_name := 'doesnt matter right now';

    dbms_scheduler.create_job(v_job_name,program_name=>'MAT_JOB_PROGRAM');
    dbms_scheduler.set_job_anydata_value(v_job_name,1,sys.anydata.convertCollection(v_multiples_columns_to_add));

    dbms_scheduler.enable(v_job_name);

    end;

繰り返しになりますが、この同じコードは DEV および TEST 環境の 11G で機能し、10G 環境でコンパイルされますが、実行時に dbms_scheduler の 2 行目 (太字) で barf するように見えます。

dbms_scheduler は 10G で動作しますか? または、「sys.anydata.convertCollection(v_multiples_columns_to_add)」に問題がある可能性があります

エラーメッセージは次のとおりです。

ORA-22370: プロシージャの19行目からメソッドが正しく使用されていません。

19 行目は convertCollection() 呼び出しのある行です。

助けてください!

4

1 に答える 1

1

ドキュメントでこれを見つけました:

http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_sched.htm#i1000820

SET_JOB_ANYDATA_VALUE では、ジョブの所有者であるか、そのジョブに対する ALTER 権限を持っている必要があります。CREATE ANY JOB 権限を持っている場合は、ジョブの引数値を設定することもできます。

これも関連している可能性があります: 行タイプに基づくコレクションを持つ ANYDATA

于 2013-10-04T04:30:34.367 に答える