0
동적 SQL 문에서 변수를 바인드하려고 시도하는 중 오늘 아침 까다로운 상황이 발생했습니다. 상황이있다 동일한 바인드 변수를 동적 SQL 블록에 여러 번 사용하려고합니다.동적 SQL의 변수 바인딩 제한
ORA-01008: not all variables bound
ORA-06512: at "SCHEMA.TEST_FUNCTION", line 19
내가 동적 SQL을 수정하는 경우 :
select test_function (3, 1) from dual;
내가 오류를 얻을 : 나는 두꺼비에서 다음 문을 실행 다음
create or replace function test_function (v1 number, v2 number)
return sys_refcursor
is
cur sys_refcursor;
v_sql clob := 'select 1 as col1,'
||chr(10)||' nvl ((select ''a = 2'''
||chr(10)||' from dual'
||chr(10)||' where :a = 2),' -- First occurance of `a`
||chr(10)||' ''a != 2'')'
||chr(10)||' as col2,'
||chr(10)||' nvl ((select ''a = 3'''
||chr(10)||' from dual'
||chr(10)||' where :a = 3),' -- Second occurance of `a`
||chr(10)||' ''a != 3'')'
||chr(10)||' as col2'
||chr(10)||' from dual'
||chr(10)||' where :b = 1'; -- another var `b` used just once
begin
open cur for v_sql using v1, v2;
return cur;
end;
/
:
다음 코드를 고려 바인드 변수 a
의 두 번째 발생을 제거하면 작동합니다. 오라클 문서 here, here 및 here을 참조하려고했지만 관련이 없습니다. 도와주세요.