Oracle Procedure, Получить данные |
Здравствуйте, гость ( Вход | Регистрация )
Oracle Procedure, Получить данные |
crashsp |
12.11.2010, 10:51
Сообщение
#1
|
Студент Группа: Участник Сообщений: 56 Регистрация: 23.10.2010 Пользователь №: 2144 Спасибо сказали: 8 раз(а) Репутация: 546 |
Доброго времени суток!
Создал простую процедуру в Oracle вот так :
Дальше в приложение Qt хочу получить ее результат пытаюсь сделать вот так : Нет ни чего, я думаю и не должно быть) ,ошибки при выполнение тоже нет. Я думаю суть я донес,собственно вопрос: каким все таки способом можно получить результат ? |
|
|
xls |
13.11.2010, 14:18
Сообщение
#2
|
Студент Группа: Участник Сообщений: 44 Регистрация: 6.9.2010 Пользователь №: 2013 Спасибо сказали: 7 раз(а) Репутация: 2 |
Пакет DBMS_OUTPUT, процедуру из которого ты использовал, предназаначен для вывода диагностических сообщений.
Если тебе надо вернуть набор записей, то нужно создавать не простую процедуру, а сложную функцию, возвращающую REFCURSOR. А просмотреть вывод диагностических сообщений можно, например, в sqlplus после включения вывода "set serveroutput on" и вызова процедуры/функции. |
|
|
crashsp |
13.11.2010, 17:22
Сообщение
#3
|
Студент Группа: Участник Сообщений: 56 Регистрация: 23.10.2010 Пользователь №: 2144 Спасибо сказали: 8 раз(а) Репутация: 546 |
Невероятно рад что кто то откликнулся!!
Вот как раз под словом "результат" я и имел ввиду диагностические сообщения просто конкретно не сформулировал вопрос sorry, то что я могу посмотреть в sqlplus это я знаю,но дело в том что мне надо это в моем приложение(редактор для себя) я знаю их куча но есть время почему бы не заморочиться, решил так.... Есть идеи как вывести это дело ??? И еще был бы очень признателен если б в двух словах если это возможно ) пояснили как отобразить данные из курсора,я над этим еще даже не думал а придется, видел на форумах что возникали такие проблеммы с отображение и ответов к сожелению не было. Так же слышал что то про OTL какого ваше мнение ? следует тратить время на ее изучение или же все можно сделать и без нее ? Благодарю..... |
|
|
xls |
15.11.2010, 14:05
Сообщение
#4
|
Студент Группа: Участник Сообщений: 44 Регистрация: 6.9.2010 Пользователь №: 2013 Спасибо сказали: 7 раз(а) Репутация: 2 |
Вот как раз под словом "результат" я и имел ввиду диагностические сообщения Получить доступ к сообщениям, выводимым с помощью DBMS_OUTPUT через QSqlQuery нельзя. Цитата Есть идеи как вывести это дело ??? И еще был бы очень признателен если б в двух словах если это возможно ) пояснили как отобразить данные из курсора,я над этим еще даже не думал а придется, видел на форумах что возникали такие проблеммы с отображение и ответов к сожелению не было. SQL create or replace package hr_employees_package as type t_ref_cursor is ref cursor; function myproc return t_ref_cursor; end hr_employees_package; create package body hr_employees_package as function myproc return t_ref_cursor is mycursor t_ref_cursor; begin open mycursor for select EMPLOYEE_ID from HR.EMPLOYEES; return mycursor; end MyProc; end hr_employees_package; Вызов, соответственно SQL select hr_employees_package.myproc from dual; Цитата Так же слышал что то про OTL какого ваше мнение ? следует тратить время на ее изучение или же все можно сделать и без нее ? C OTL Вам лучше пока поверменить |
|
|
crashsp |
15.11.2010, 20:36
Сообщение
#5
|
Студент Группа: Участник Сообщений: 56 Регистрация: 23.10.2010 Пользователь №: 2144 Спасибо сказали: 8 раз(а) Репутация: 546 |
Огромное спасибо за информацию !!
Пример скомпилился все окей, в Pl/Devolop отработал вернул курсор показал записи но в Qt приложение выдал вот такую штуку qDecodeOCIType: unknown OCI datatype: 116 "ORA-00932: несовместимые типы данных: ожидается CHAR, получено DTYCWD Unable to goto next" C чем это связано?? и как с этим бороться ? Благодарю.... |
|
|
xls |
16.11.2010, 14:41
Сообщение
#6
|
Студент Группа: Участник Сообщений: 44 Регистрация: 6.9.2010 Пользователь №: 2013 Спасибо сказали: 7 раз(а) Репутация: 2 |
Цитата qDecodeOCIType: unknown OCI datatype: 116 "ORA-00932: несовместимые типы данных: ожидается CHAR, получено DTYCWD Unable to goto next" C чем это связано?? и как с этим бороться ? Видимо, все же функция, возвращающая курсор, не может быть использована для возврата записей в Qt обычным способом. Если не принципиально, можно пойди в обход: создать таблицу со столбцами, соответствующими требуемым столбцам в возвращаемых записях ( полагаю, функция писалась все же не для того, чтобы выбрать все EMPLOYEE_ID из HR.EMPLOYEES ) и в теле функции заполнять эту таблицу, а потом считывать поля обычным SQL-запросом. |
|
|
crashsp |
16.11.2010, 15:33
Сообщение
#7
|
Студент Группа: Участник Сообщений: 56 Регистрация: 23.10.2010 Пользователь №: 2144 Спасибо сказали: 8 раз(а) Репутация: 546 |
Еще раз спасибо за помощь
Буду знать...в прочем все таки альтернатива где то есть))буду искать |
|
|
Текстовая версия | Сейчас: 18.1.2025, 1:50 |