2016-12-21 12 views
0

私は、表(ソリューション表)に挿入するバックトラッキングを呼び出すOracle Form内でプロシージャを作成しています。そのバックトラッキングは、 "豆"のVARRAY(ítem_array)によって与えられます。問題は、コンパイラは関数名がないことを示しています。データベース内Oracle Formsコンパイラは、関数として型をマークします。

既存のオブジェクト:

CREATE TYPE item IS object(NUM_OPERACIO NUMBER, TITULS NUMBER); 
CREATE TYPE item_array IS VARRAY(1000) OF item; 
create table my_table (NUM_OPERACIO NUMBER, TITULS NUMBER); 
insert into my_table (NUM_OPERACIO,TITULS) values (1,10); 
insert into my_table (NUM_OPERACIO,TITULS) values (2,20) 
insert into my_table (NUM_OPERACIO,TITULS) values (3,30) 

手順

PROCEDURE solver 
IS 
    arr item_array; 
BEGIN 

    SELECT item(NUM_OPERACIO,TITULS) 
    BULK COLLECT INTO arr 
    FROM my_table; 

    delete from solucion ; 

    backtra(arr,1,0,30); 
END; 

私はこれを解決するために何ができますか?

+0

同じスキーマですべてが実行されている(または特権などが正しく設定されている)限り、そのタイプは正常に作成されています。あなたが得る完全なエラーメッセージスタックは何ですか? –

+0

エラー591。この機能はクライアントがインストールしたプログラムではサポートされていません。 エラー222.このスコープには関数名はありません。 エラー0。文は無視されます。 –

+0

'item'、' item_array'、および 'my_table'というオブジェクトをどのスキーマで作成しましたか?これらのオブジェクトがAPPSと同義語を持っていること、またはOracle Formsのデフォルト・スキーマ(APPS)には表示されないことを確認してください。 –

答えて

0

これはPLSエラー番号です。

「PLS-00591::the documentationからこの機能は、クライアント側のプログラムではサポートされていません
原因:例えばEXECUTE(プラグマAUTONOMOUS_TRANSACTION、動的SQL文、次の特徴の一つは、間違ったコンテキストで使用されましたIMMEDIATE)、およびバルクバインドこれらの機能は、サーバー側プログラムでのみ使用できますが、クライアント側プログラムでは使用できません。

コードでバルクバインドが使用されているため、エラーが発生します。 Forms PL/SQLとデータベースPL/SQLは類似していますが、それらは異なるエンジンを使用し、両方でサポートされる機能はいずれかのすべての機能のサブセットです。解決方法は、配列集団をデータベースプロシージャに渡し、必要に応じてFormsから呼び出すことです。

あなたが解決しようとしている問題を正確に知らなくても、より良い答えを出すのは難しいです。

関連する問題