주기에 "즉시 실행"을 사용할 수 있습니까? pl/sql에 값 조합을 생성해야합니다. 이것에 대해서 순환을 위해 일련의 중첩 된 다이내믹을 호출 할 생각입니다.즉시 실행 PL/SQL
예 : 1 열이 값이 : C, D, E
I이 결합 생성하고자: AC/AD/AE가/BC를/BD를 B 컬럼 2는이 값을 가질/
나는이 같은 얻기 위해 생각하고 BE :
for i in 1..count.column1
for j in 1..count.column2
dbms_output.put_line(column1.value(i)||'-'||column1.value(j));
end loop;
end loop;
을 내가 열 (변수)의 번호를 모르는 때문에, 가 나는 즉시 실행 사용할 수 있습니까?
declare
sql_stmt varchar2(200);
begin
sql_stmt := 'for i in 1..count.column1 for j in 1..count.column2 dbms_output.put_line(column1.value(i)||'-'||column1.value(j)); end loop; end loop';
execute immediate sql_stmt;
end;
그러나 오류 ORA-06512가 있습니다. 어떻게 만들 수 있습니까? :)
미리 감사드립니다.
쉽지 않습니다. 'execute immediate' 프로세스는 완전한 SQL 문과 PL/SQL 블록을 처리하며, 호출하는 프로 시저와 변수 범위를 공유하지 않습니다. 'declare ... begin ... end;'블록 전체를 생성하고 바인드 변수를 전달하고 결과를 배열 또는 참조 커서로 전달해야합니다. 또한 이와 같이 배치로 문장을 생성하면 Oracle의 커서 캐시를 파쇄하는 경향이 있습니다. –