create or replace PROCEDURE P_STAGE_LOAD(
in_S IN VARCHAR2,
in_D IN VARCHAR2,
in_T IN VARCHAR2)
IS
v_ERRM VARCHAR2(32000);
BEGIN
IF in_TBL_NAME ='TRAN_CUSTOMER' THEN
EXECUTE immediate 'INSERT INTO TRAN_CUSTOMER
(CUSTOMER_ID,AUTH_ID,OTHER_ID,TRAN_TYPE,AUDIT_TS)
SELECT CUSTOMER_ID,AUTH_ID,OTHER_ID,NVL(TRAN_TYPE,'PRIMARY'),
SYSDATE
FROM '||in_S||'.'||in_T||'@'||in_D;
EXECUTE immediate 'COMMIT';
実行時にInvalid Identifier
というエラーが発生します。しかし、SELECTクエリは単独でうまく動作します。 NULL
をTRAN_TYPE
とし、NULL
のときにはPRIMARY
となるようにデコードします。 対象テーブルTRAN_CUSTOMER
には、NOT NULL
の列が入ります。EXECUTE IMMEDIATE SELECTでNVLを使用中に無効な識別子エラーが発生する
には何か不足しているものがありますか?
「END IF」と「END」部分はどこですか?また、エラーの原因となっている行と、エラーコードの正確なエラーは何か。 – Utsav
その行にあるCUSTOMER_ID、AUTH_ID、OTHER_ID、NVL(TRAN_TYPE、 'PRIMARY')、 –
'nvl'を削除して' tran_type'を使うとどうなりますか? – Utsav