안녕하세요.
다름이 아니라 %rowtype을 동적 쿼리에 바인딩 변수로 할당해주는데 에러가 납니다.
하지만 ROW_EMP.EMPNO 처럼 컬럼명을 직접 넣어주면 정상 처리됩니다.
원인이 궁금합니다. 이런 방법을 이용해서 처리할려는 로직이 있는데 샘플 테스트 중 시작부터 막히네요.
혹시 rowtype을 바인딩 변수로 사용하시는 분은 안 계신가요?
---------------------------------------------------------------
DECLARE
ROW_EMP EMP%ROWTYPE;
V_STMT VARCHAR2(1000);
BEGIN
ROW_EMP.EMPNO := 1234;
DBMS_OUTPUT.put_line ('--1 ROW_EMP.EMPNO ('||ROW_EMP.EMPNO||')');
V_STMT := 'BEGIN :1 := NULL; END;';
EXECUTE IMMEDIATE V_STMT USING IN OUT ROW_EMP;
DBMS_OUTPUT.put_line ('--2 ROW_EMP.EMPNO ('||ROW_EMP.EMPNO||')');
END;
SQL Error [6550] [65000]: ORA-06550: line 9, column 41:
PLS-00457: expressions have to be of SQL types
ORA-06550: line 9, column 3:
PL/SQL: Statement ignored
---------------------------------------------------------------
DECLARE
ROW_EMP EMP%ROWTYPE;
V_STMT VARCHAR2(1000);
BEGIN
ROW_EMP.EMPNO := 1234;
DBMS_OUTPUT.put_line ('--1 ROW_EMP.EMPNO ('||ROW_EMP.EMPNO||')');
V_STMT := 'BEGIN :1 := NULL; END;';
EXECUTE IMMEDIATE V_STMT USING IN OUT ROW_EMP.EMPNO;
DBMS_OUTPUT.put_line ('--2 ROW_EMP.EMPNO ('||ROW_EMP.EMPNO||')');
END;
--1 ROW_EMP.EMPNO (1234)
--2 ROW_EMP.EMPNO ()
|