2016-12-21 2 views
0

테이블 (솔루션 테이블)에 삽입하는 역 추적을 호출하는 Oracle Form 내부에서 프로 시저를 만들고 있습니다. 그 역 추적은 'tems (콩)의 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에서 호출하는 것입니다.

해결하려는 문제를 정확히 모른 채 더 나은 답변을 제공하는 것이 더 어렵습니다.

관련 문제