0
Oracle에서 테이블의 열을 반복하고 열 이름과 데이터 형식을 저장하는 간단한 커서를 만들려고합니다. 입력을 사용하여 테이블 이름을 동적으로 지정합니다. 프로 시저 (선언되지 않은 변수 등)를 컴파일하려고 할 때 여러 가지 오류 메시지가 나타납니다. 나는 나의 기본 구조를 틀리게해야한다.커서 동적 SQL 사용
CREATE OR REPLACE PROCEDURE DV
(
TABLENAME IN VARCHAR2
)
authid current_user
AS
sql_qx varchar2(5000);
curTab varchar2(5000);
curCol varchar2(5000);
curTyp varchar2(5000);
BEGIN
sql_qx := 'DECLARE CURSOR tblCur IS
SELECT table_name,
column_name,
data_type
FROM user_tab_columns
WHERE table_name = ''' || TABLENAME || '''';
execute immediate sql_qx;
IF NOT tblCur%ISOPEN THEN
OPEN tblCur;
END IF;
FETCH tblCur INTO curTab, curCol, curTyp;
WHILE tblCur%FOUND THEN
LOOP
dbms_output.put_line(tblCur.curTab || ' ' ||tblCur.curCol || ' ' ||tblCur.curTyp);
FETCH tblCur INTO curTab, curCol, curTyp;
END LOOP;
END DV;