Oracle
 sql >> Base de données >  >> RDS >> Oracle

Problèmes lorsque l'utilisateur saisit des données dans la commande sql

Les variables de substitution sont éventuellement terminées par un point pour les séparer des caractères qui suivent. Si vous souhaitez également en utiliser un dans la chaîne, vous devez ajouter explicitement cette terminaison :

spool E:\abc\Test\File1_&MYPeriod..csv

Pour le problème des deux lignes supplémentaires, ajoutez set verify off ; pour le moment, il est réglé sur on (par défaut) afin qu'il vous montre l'ancienne et la nouvelle valeur de toutes les variables de substitution que vous utilisez.

La seule façon que je connaisse pour obtenir la date dans le nom du fichier est de la mettre d'abord dans une variable de substitution :

set termout off
column x_run_dt new_value y_run_dt
select to_char(sysdate, 'YYYYMMDDHH24MISS') as x_run_dt from dual;
set termout on
spool E:\abc\Test\File1_&MYPeriod._&y_run_dt..csv

La new_value La clause vous permet de créer une variable de substitution, &y_run_dt dans ce cas, avec une valeur d'une colonne interrogée, x_run_dt . Envelopper le select qui génère cette valeur entre set termout clauses le cache de la sortie normale, lorsqu'il est exécuté en tant que script.