2010-10-26 2 views
4

Я хочу установить переменную окружения long на основе размера XML-данных, которые я пытаюсь получить. Идея что-то вроде этого:Oracle SQLPlus настройка переменной окружения на основе переменной

var XML_DATA_SIZE number; 

SELECT TRIM(LENGTH(xmltype.getClobVal(xml_data))) 
    INTO :XML_data_size 
    FROM xml_tab 
WHERE key = '1234'; 

print XML_DATA_SIZE 
set long XML_DATA_SIZE 
set pagesize 0 
set line 2000 

set termout off 
spool XMLDATA.xml 
select xml_data from xml_tab where key = '1234'; 
spool off 

Это дает ошибку: SP2-0268: long option not a valid number, а файл XML содержит только 80 символов.

+0

Почему бы не просто установить его максимально и не беспокоиться об этом? –

+1

@ Adam Hawkes: Из того, что я прочитал, если я поставил «длинный» максимально возможным, клиенту понадобится столько свободной памяти, даже если фактические данные, которые я возвращаю, намного меньше. Я не ожидаю, что это возможно, но я очень неохотно догадываюсь о фактическом максимуме. В тестовых данных образцы XML-документов варьируются от 20 КБ до 3000 КБ, и это только очень простые тестовые данные. – FrustratedWithFormsDesigner

+0

Ну, это будет проблемой. Я уверен, что ограничение составляет 2 миллиона байт. Так что сообщение 3000K будет отключено. И выделение 2 МБ ОЗУ на клиента для меня не похоже. –

ответ

4

Вместо

set long XML_DATA_SIZE 

попробовать

set long &XML_DATA_SIZE 

[EDIT]:

Извиняюсь, я возился с некоторыми другими вариантами, которые перепутались мой тест. Попробуйте следующее:

define xml_data_size=0 
column xml_data_size new_value xml_data_size noprint 

select trim(length(xmltype.getClobVal(xml_data))) xml_data_size from xml_tab where key = '1234'; 

set long &xml_data_size 
sho long 
set pagesize 0 
... 
... 
+1

В SQLPlus это приведет к появлению приглашения ... –

+0

нет, если у вас уже установлено значение. Он работает для меня в SQL * Plus – bhangm

+0

Я пробовал это, это подсказывает мне. Я могу ввести число, которое дает инструкция 'print', и все в порядке, но в конечном итоге я хочу дать это аналитикам, которые просто запускают это в пакетном режиме и используют полученные файлы. – FrustratedWithFormsDesigner

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

  • Нет связанных вопросов^_^