2016-06-14 5 views
-2

에 대한 종료되지 :이 라인에 대한SQL 명령이 제대로 나는 PL/SQL 기능을 가지고 있다는 점에서 내가 다음 코드 조각이 SELECT 문

execute immediate 'select ' || schemaname || '.' || value1 || '_seq.nextval from dual into cnpParmId'; 

를, 나는 오류가 점점 오전 :

SQL Error: ORA-00933: SQL command not properly ended

위의 코드에서 선택 쿼리 결과로 value1이 표시됩니다. schemaname은 함수의 입력이고 cnpParmId은 함수의 반환 값입니다.

이 문제를 해결하기 위해 여러 가지 방법을 시도했지만 여전히 오류가 발생합니다.

답변

1

우리의 프로 시저를 더 많이 보여주지 않으면 말하기 어렵지만, 동적 SQL에 cnpParmId을 연결하는 것이 아니라고 생각합니다 (동적 SQL이 cnpParmId을 해석하는 방법을 어떻게 알 수 있습니까?) . cnpParmId은 아마도 프로 시저의 어딘가에 정의되어있을 것입니다.

대신에, 당신은 아마 execute immediate 명령의 into 절을 사용하는 의미 :

execute immediate 'select ' || schemaname || '.' || value1 || '_seq.nextval from dual' 
into cnpParmId; 
+0

이 함수가 모습입니다 같은 : – bin

+0

미안 해요, 난 그냥 '때해야, into' 돌려 말한 실현 단순히 '들어가'다. 그러나 요점은 동일하며'into' 절이 동적 SQL의 일부가 아니어야합니다. – sstan

+0

나는이 방법을 시도했지만 doent 작업 : 즉각적인 'select'실행 || schemaname || '.' || 가치 1 || '_seq.nextval from dual'을 (를) cnpParmId에 입력하십시오. 오류 : SQL 오류 : ORA-00904 : "CNPPARMID": 잘못된 식별자 – bin