Question

J'ai un script qui obtient l'heure actuelle, et doit passer à un autre script.

variable v_s_time varchar2(30);
exec :v_s_time := to_char(sysdate,'YYYY-MM-DD HH:MI:SS AM');
--Lots of unrelated code here
variable v_e_time varchar2(30);
exec :v_e_time  := to_char(sysdate,'YYYY-MM-DD HH:MI:SS AM');
@"test report script.sql" :v_s_time :v_e_time; --yes, I also tried ":v_s_time", didn't seem to do anything.

ne fonctionne pas, il semble que le :v_s_time littéral est passé au script, au lieu de ce que je veux. "2010-04-14 05:50:01 PM"

Pour exécuter manuellement, je pourrais entrer:

@"test report script.sql" "2010-04-14 05:50:01 PM" "2010-04-14 05:57:34 PM"

Je trouve que ce qui fonctionne est la suivante:

define v_s_time = "2010-04-14 05:50:01 PM"
--Lots of unrelated code here
define v_e_time = "2010-04-14 05:57:34 PM"
@"test report script.sql" "&&v_s_time" "&&v_e_time";

Mais il est irréaliste de hardcode les datetimes. Quelqu'un sait comment gérer cela?

(Oracle 10g)

Était-ce utile?

La solution

Vous pouvez utiliser la clause NEW_VALUE de la commande COL pour récupérer dynamiquement une valeur dans une variable de substitution:

SQL> /*Declare that the "dat" column will be stored in the v_date variable*/
SQL> COL dat NEW_VALUE v_date

SQL> SELECT to_char(sysdate,'YYYY-MM-DD HH:MI:SS AM') dat FROM dual;

DAT
----------------------
2010-04-15 09:54:29 AM

SQL> select '&&v_date' from dual;

'2010-04-1509:54:29AM'
----------------------
2010-04-15 09:54:29 AM

Vous pouvez ensuite appeler votre script avec cette variable de substitution:

@"test report script.sql" &&v_date

Autres conseils

Pouvez-vous référence seulement les variables de liaison dans le script « rapport d'essai script.sql »? En d'autres termes, vous avez dans « rapport d'essai script.sql » une référence directe à v_s_time et v_e_time, sauter le SQL plus définir variable. Il ne semble pas y avoir de façon vraiment élégante convertir les variables de liaison à SQL plus des variables DEFINE'd.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top