2012-04-20 2 views
0

Я пытаюсь вызвать хранимую процедуру в Oracle и показывают результаты вызова, проблема заключается в том, что он выходит из строя на линии FETCH v_cur into v_a; с ошибкой: ORA-06504: PL/SQL: Return types of Result Set variables or query do not match.Как получить результат/вывод refcursor для отображения в виде текста?

Я предполагаю, что результат запроса не соответствует v_a VARCHAR2(100) , но я не знаю, что там положить. Вызываемая хранимая процедура объединяет несколько таблиц и выбирает более 20 + разных столбцов, принадлежащих разным таблицам. Поэтому я хотел бы просто просмотреть вывод запроса без необходимости ссылаться на каждый столбец результатов отдельно. Как я пойду и сделаю это?

Я использую SQL Navigator (не так уж и важно).

DECLARE 
    v_cur SYS_REFCURSOR; 
    v_a VARCHAR2(100); 
BEGIN 
    pkg_get_results.get_rows(v_cur,to_date('2012/04/12', 'yyyy/mm/dd'),to_date('2012/04/12', 'yyyy/mm/dd'), '','','',''); 
    LOOP 
    FETCH v_cur into v_a; -- what to put here ? 
    EXIT WHEN v_cur%NOTFOUND; 
    dbms_output.put_line(v_a); 
    END LOOP; 
    CLOSE v_cur; 
END; 
+1

На самом деле важно, какой продукт вы используете. Для SQL Nav следуйте инструкциям здесь: http://sqlnavigator.inside.quest.com/thread.jspa?threadID=2466 –

+1

@IgbyLargeman - Я проголосовал бы за это, если бы вы разместили его в качестве ответа. –

+0

@JustinCave: Спасибо, но мне просто не кажется, что я должен отправить ответ, который в основном «я искал его, вот что я нашел» без какой-либо разработки из моих собственных знаний или исследований. К сожалению, я не работаю с Oracle в эти дни и не могу (или время) тестировать. –

ответ

2

У SQL Navigator есть возможность сделать это за вас. Как это сделать в точности зависит от вашей версии Navigator, и это возможно (хотя я не знаю), некоторые версии могут не иметь этого.

Инструкции можно найти в этой теме: http://sqlnavigator.inside.quest.com/thread.jspa?threadID=2466

Кстати, Жаба также имеет эту способность.

+0

Таким образом, нет способа сделать это, например. SQLPlus? – Oysio

+0

Несомненно. Вы можете определить переменную связывания перед блоком PL/SQL и затем распечатать ее. Посмотрите здесь: http://docs.oracle.com/cd/B28359%5F01/server.111/b31189/ch5.htm#autoId34 –

+0

@JuergenHartelt спасибо! – Oysio

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