crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Oracle Procedure
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
crashsp Дата 16.11.2010, 15:33
  Еще раз спасибо за помощь
Буду знать...в прочем все таки альтернатива где то есть))буду искать
xls Дата 16.11.2010, 14:41
 
Цитата
qDecodeOCIType: unknown OCI datatype: 116
"ORA-00932: несовместимые типы данных: ожидается CHAR, получено DTYCWD
Unable to goto next"
C чем это связано?? и как с этим бороться ?

Видимо, все же функция, возвращающая курсор, не может быть использована для возврата записей в Qt обычным способом.
Если не принципиально, можно пойди в обход: создать таблицу со столбцами, соответствующими требуемым столбцам в возвращаемых записях ( полагаю, функция писалась все же не для того, чтобы выбрать все EMPLOYEE_ID из HR.EMPLOYEES ) и в теле функции заполнять эту таблицу, а потом считывать поля обычным SQL-запросом.
crashsp Дата 15.11.2010, 20:36
  Огромное спасибо за информацию !!
Пример скомпилился все окей, в Pl/Devolop отработал вернул курсор показал записи
но в Qt приложение выдал вот такую штуку

qDecodeOCIType: unknown OCI datatype: 116
"ORA-00932: несовместимые типы данных: ожидается CHAR, получено DTYCWD
Unable to goto next"


C чем это связано?? и как с этим бороться ?

Благодарю....

xls Дата 15.11.2010, 14:05
 
Цитата(crashsp @ 13.11.2010, 17:22) *
Вот как раз под словом "результат" я и имел ввиду диагностические сообщения

Получить доступ к сообщениям, выводимым с помощью 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 Дата 13.11.2010, 17:22
  Невероятно рад что кто то откликнулся!!

Вот как раз под словом "результат" я и имел ввиду диагностические сообщения просто конкретно не сформулировал вопрос sorry,
то что я могу посмотреть в sqlplus это я знаю,но дело в том что мне надо это в моем приложение(редактор для себя) я знаю их куча
но есть время почему бы не заморочиться, решил так....

Есть идеи как вывести это дело ???
И еще был бы очень признателен если б в двух словах если это возможно ) пояснили как отобразить данные из курсора,я над этим еще даже не думал
а придется, видел на форумах что возникали такие проблеммы с отображение и ответов к сожелению не было.
Так же слышал что то про OTL какого ваше мнение ? следует тратить время на ее изучение или же все можно сделать и без нее ?

Благодарю.....
xls Дата 13.11.2010, 14:18
  Пакет DBMS_OUTPUT, процедуру из которого ты использовал, предназаначен для вывода диагностических сообщений.
Если тебе надо вернуть набор записей, то нужно создавать не простую процедуру, а сложную функцию, возвращающую REFCURSOR.
А просмотреть вывод диагностических сообщений можно, например, в sqlplus после включения вывода "set serveroutput on" и вызова процедуры/функции.
crashsp Дата 12.11.2010, 10:51
  Доброго времени суток!
Создал простую процедуру в Oracle вот так :
create or replace procedure MyProc is
emp_id number;
CURSOR cur_emp IS
SELECT HR.Employees.EMPLOYEE_ID FROM HR.EMPLOYEES;
BEGIN
  OPEN cur_emp;
      LOOP
       
            FETCH cur_emp into emp_id;
           dbms_output.put_line('ID_EMPLOYEES :'||emp_id);

            EXIT WHEN cur_emp%NOTFOUND;  
      
      end LOOP;
      
      CLOSE cur_emp;
      
END MyProc;


Дальше в приложение Qt хочу получить ее результат пытаюсь сделать вот так :
    QSqlQuery query(m_db);
    query.exec("call MyProc()");
    
   while(query.next()){
         qDebug()<<query.value(0).toString();   
    }

Нет ни чего, я думаю и не должно быть) ,ошибки при выполнение тоже нет.
Я думаю суть я донес,собственно вопрос: каким все таки способом можно получить результат ?
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 5.7.2025, 6:15