ビューは次を使用して生成されます。
CREATE OR REPLACE VIEW USER_AUD_VIEW (AUDIT_ID, USER_ID, TABLE_NAME_TXT, COLUMN_NAME_TXT, OLD_VALUE_TXT, NEW_VALUE_TXT, AUDIT_LAST_UPDATED_DT, AUDIT_UPDATED_USER_ID, EVALUATOR_ID, PRODUCT_ID)
AS
SELECT acm.audit_id,
CAST(GET_TOKEN(GET_TOKEN(acm.PRIMARY_KEY_VALUES,1,','),2,':') AS VARCHAR2(64)) AS user_id,
acm.table_name_txt,
CASE WHEN (acm.table_name_txt = 'XREF_USER_PRODUCT')
THEN (mstr_product.product_description_txt || '/' || acm.column_name_txt)
ELSE acm.column_name_txt
END AS column_name_txt,
CASE WHEN UPPER(acm.column_name_txt) = 'PASSWORD_TXT'
THEN '******'
ELSE acm.old_value_txt
END AS old_value_txt,
CASE WHEN UPPER(acm.column_name_txt) = 'PASSWORD_TXT'
THEN '******'
ELSE acm.new_value_txt
END AS new_value_txt,
acm.system_dt,
CASE WHEN UPPER(acm.audit_updated_user_id) = 'UNKNOWN'
THEN acm.audit_updated_user_id
ELSE (users.user_id
|| ' ('
|| DECODE(users.last_name_txt, NULL,' ' , users.last_name_txt)
|| ', '
|| DECODE(users.first_name_txt, NULL,' ' , users.first_name_txt)
|| ')' )
END AS audit_updated_user_id,
acm.evaluator_id,
CASE WHEN UPPER(acm.table_name_txt) = 'XREF_USER_PRODUCT'
THEN TO_NUMBER(trim(GET_TOKEN(GET_TOKEN(acm.PRIMARY_KEY_VALUES,2,','),2,':')))
ELSE 0
END AS product_id
FROM audit_config_maintenance acm,
users,
mstr_product
WHERE acm.table_name_txt in ('USERS','XREF_USER_PRODUCT','XREF_USER_FUNCTION')
AND UPPER(acm.audit_updated_user_id) = UPPER(users.user_id)
AND CASE WHEN UPPER(acm.table_name_txt) = 'XREF_USER_PRODUCT'
THEN TO_NUMBER(trim(GET_TOKEN(GET_TOKEN(acm.PRIMARY_KEY_VALUES,2,','),2,':')))
ELSE -1
END = mstr_product.product_id
AND acm.primary_key_values is not null
/
desc USER_AUD_VIEW を実行すると、
Name Null? Type
AUDIT_ID NOT NULL NUMBER
USER_ID VARCHAR2(64)
TABLE_NAME_TXT VARCHAR2(30)
COLUMN_NAME_TXT VARCHAR2(81)
OLD_VALUE_TXT VARCHAR2(64)
NEW_VALUE_TXT VARCHAR2(64)
AUDIT_LAST_UPDATED_DT DATE
AUDIT_UPDATED_USER_ID VARCHAR2(71)
EVALUATOR_ID NUMBER
PRODUCT_ID NUMBER
それでも、 select * from USER_AUD_VIEW を実行すると、
ORA-01722: 番号が無効です
ビューの作成に何か問題がありますか?