Pregunta

Tengo un script que obtiene la hora actual, y debe pasar a otro guión.

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.

Esto no funciona, parece que el :v_s_time literal se pasa a la secuencia de comandos, en lugar de lo que quiero:. "2010-04-14 05:50:01 PM"

Para ejecutar esto manualmente, podría entrar en:

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

He encontrado que lo que hace el trabajo es la siguiente:

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";

Pero no es realista codificar los datetimes. Alguien sabe cómo manejar esto?

(Oracle 10g)

¿Fue útil?

Solución

Se puede utilizar la cláusula de NEW_VALUE el comando COL para recuperar dinámicamente un valor en una variable de sustitución:

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

A continuación, puede llamar a la secuencia de comandos con esta variable de sustitución:

@"test report script.sql" &&v_date

Otros consejos

Puede usted acaba de hacer referencia a las variables se unen en el guión "prueba de informe script.sql"? En otras palabras, en "script.sql informe de la prueba", que tiene una referencia directa a v_s_time y v_e_time, sin esperar SQL Plus definir variable. No parece haber ninguna manera muy elegante convertir de variables se unen a Plus las variables que se defina SQL.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top