programing

PLS-00231:함수는 SQL에서 사용할 수 없습니다.

yellowcard 2023. 7. 24. 22:24
반응형

PLS-00231:함수는 SQL에서 사용할 수 없습니다.

패키지를 만들지 않고 파이프라인 기능을 테스트하고 싶습니다.다음은 단순화된 예입니다.

DECLARE
    FUNCTION testDC RETURN NCOL PIPELINED IS
    BEGIN
        PIPE ROW(5);
    END;
BEGIN
    FOR cur IN (select * from table (testDC())) LOOP
        dbms_output.put_line('--> ');
    END LOOP;
END;

하지만 다음과 같은 오류가 발생합니다.

ORA-06550: 7행, 7열: pls-00231: TESTDC 함수는 SQL에서 사용할 수 없습니다.
ORA-06550: 7행, 7열: PL/SQL: ORA-00904: : 잘못된 식별자
ORA-06550: 7행, 7열: PL/SQL: SQL 문이 무시됨

이러한 기능을 테스트하는 더 좋은 방법은 무엇입니까?

파이프라인 함수를 독립 실행형 프로시저 또는 패키지 멤버로 만듭니다.그런 다음 스크립트에서 호출할 수 있습니다.

또한 참조하는 NCOL 매개 변수가 호출 스크립트에서 액세스할 수 있는 스키마로 선언되었는지 확인합니다.

PL/SQL에서는 테이블 함수에 직접 액세스할 수 없습니다. 아래 테스트 사례를 참조하십시오.따라서 다른 지적 사항처럼 테이블 기능을 독립 실행형 또는 패키지로 정의해야 합니다.

 DECLARE
   res NUMBER; 
   FUNCTION testDC RETURN NCOL PIPELINED IS
     BEGIN
         PIPE ROW(5);
     END;

 BEGIN
         res := testDC();
         dbms_output.put_line('--> '||res);

 END;
 /


 ORA-06550: line 3, column 12:
 PLS-00653: aggregate/table functions are not allowed in PL/SQL scope

언급URL : https://stackoverflow.com/questions/32505663/pls-00231-function-may-not-be-used-in-sql

반응형