La modification de la précision de la colonne lors de la création d'une vue en Oracle
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,
GET_TOKEN(GET_TOKEN(acm.PRIMARY_KEY_VALUES,1,','),2,':') AS user_id,
acm.table_name_txt,
acm.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.audit_last_updated_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_uupdated_user_id,
acm.evaluator_id,
TO_NUMBER(GET_TOKEN(GET_TOKEN(acm.PRIMARY_KEY_VALUES,2,','),2,':')) AS product_id
FROM audit_config_maintenance acm,
users
WHERE acm.table_name_txt in ('USERS','XREF_USER_PRODUCT')
AND UPPER(acm.audit_updated_user_id) = UPPER(users.user_id)
AND acm.primary_key_values is not null
Lors de la création de la vue comme ci-dessus, le get_token() fonction, le type de colonne un varchar2(4000). Comment puis-je changer la commande de manière à ce qu'il fait de ce domaine un varchar2(64) ?
OriginalL'auteur roymustang86 | 2012-05-11
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
CAST
fonction, c'est à direCAST( GET_TOKEN(GET_TOKEN(acm.PRIMARY_KEY_VALUES,1,','),2,':') AS VARCHAR2(64)
Si vous créez une fonction
Alors qu'un simple vue qui sélectionne cette fonction aura un
VARCHAR2(4000)
type de données.Si vous encapsuler l'appel à un
CAST
, cependant, les changements de longueurOriginalL'auteur Justin Cave
Utilisation de la fonction de distribution. Dans ce cas, l'envelopper de get_toklen avec des acteurs
OriginalL'auteur Kevin Rohrssen