WedX - журнал о программировании и компьютерных науках

Перехватить значение RETURN процедуры PL/SQL в командной строке?

В настоящее время я использую

%testvar%=sqlplus usr/password@schema @test.sql
echo %testvar%

где test.sql вызывает процедуру, используя блок BEGIN END, и сохраняет возвращенное значение в строковой переменной с именем x, как теперь вернуть это в командную строку?


Ответы:


1
  1. Добавьте DBMS_OUTPUT.PUT_LINE в свою процедуру и распечатайте значение
  2. Запустить SQL*плюс
  3. Подключиться к оракулу
  4. запустить катушку
  5. запустить процедуру
  6. остановить катушку
  7. выход из SQL*Plus
  8. прочитать значение из файла

Что-то вроде этого:

sqlplus /NOLOG
SQL> CONNECT user/password@alias
SQL> SET SERVEROUTPUT ON
SQL> spool /tmp/proc_result.txt
SQL> BEGIN
2    DBMS_OUTPUT.PUT_LINE('hello_world');
3    END;
4    /
hello_world
SQL> spool off
SQL> DISCONNECT
SQL> EXIT

На этом этапе вы хотите использовать оболочку для чтения значения.

28.08.2013

2

Я, наконец, использовал это, PS мне пришлось получить сопоставленный путь к каталогу из имени каталога: $ 1 здесь имя пользователя / пароль @ схема

    var=`sqlplus $1  <<+ | grep "Delimeter!*" | sed -n -e '/\[[^]]/s/^[^[]*\[\([^]]*\)].*$/\1/p'
    SET SERVEROUT ON
    SET ECHO OFF
    SET LINESIZE 4000
    DECLARE
      A VARCHAR2(400);
    BEGIN
        SELECT directory_path into A from all_directories where directory_name='$input_dir';
dbms_output.put_line( 'Delimeter! [' || A || ']' );
    END;
    /
    exit
    +`

Примечание. Это `, а не '.

24.09.2013

3

Процедура может возвращать значение только через параметр OUT, однако функция может возвращать значение, которое может быть сохранено в переменной. Я не уверен, как вы пытаетесь вернуть значение через процедуру, но кажется, что то, что вы пытаетесь сделать, работало бы лучше, если бы вы написали функцию.

28.08.2013
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]