2010-04-14 1 views
2

У меня есть сценарий, который получает текущее время и должен передать его другому сценарию.Передача значения переменной sqlplus из одного сценария в другой

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. 

Это не работает, кажется, что буквальное :v_s_time передается в сценарий, вместо того, что я хочу: "2010-04-14 05:50:01 PM".

Чтобы выполнить это вручную, я мог бы войти:

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

Я обнаружил, что делает работу заключается в следующем:

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

Но это нереально Кодирую в DateTimes. Кто-нибудь знает, как справиться с этим?

(Oracle 10g)

ответ

4

Вы можете использовать NEW_VALUE clause of the COL command динамически получить значение в качестве замены переменного:

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 

Вы можете назвать свой скрипт с этим переменным заменителем:

@"test report script.sql" &&v_date 
+0

Да, похоже, что он работает! :) – FrustratedWithFormsDesigner

1

Вы можете просто ссылаться на переменные связывания в сценарии "тестовый отчет script.sql"? Другими словами, в «тестовом отчете script.sql» у вас есть прямая ссылка на v_s_time и v_e_time, пропуская переменную define SQL Plus. Кажется, не существует действительно элегантного способа конвертировать из переменных привязки в SQL Плюс переменные DEFINE.

+0

ли это работает? Хмм, мне придется попробовать это завтра. Мне не нравится идея 'scriptB' в зависимости от переменных, которые могут быть или не были созданы в' scriptA', и это затрудняет запуск 'scriptB' для тестирования, но если это единственный способ ... – FrustratedWithFormsDesigner

Смежные вопросы