Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Передача выходных параметров из хранимой процедуры в приложение  (Прочитано 12847 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Solo
Гость
« : 08-03-2006 07:19 » 

Подскажите, передать выходной (output) параметр из хранимой процедуры в приложение на delphi, если я вызываю эту процедуру в приложении с помощью Query: sql.add('exec proc1 :par1, :par2'), где par1, par2
входные параметры
« Последнее редактирование: 13-12-2007 19:47 от Алексей1153++ » Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #1 : 08-03-2006 09:36 » 

переменные в запросе надо "привязать" к переменным в программе, точно не скажу, но ищи что-то вроде query.bind или query.bindvariable
Записан

Удачного всем кодинга! -=x[PooH]x=-
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 08-03-2006 14:43 » new

Выполняешь SQL запрос Query.Execute (Query.ExecQuery в зависимости от используемого компонента). А дальше просматриваешь Query как обычную таблицу. т.е. запрос типа SELECT и запрос к хранимой процедуре ничем не отличаются. Результатом является возращаемый набор записей. В принцепе можно вызов процедуры оформить как SELECT запрос: sql.add('select поле1,поле2 ... from proc1(:par1, :par2)'), где поле1,поле2 ... это имена output полей хранимой процедуры.
« Последнее редактирование: 13-12-2007 19:47 от Алексей1153++ » Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
Solo
Гость
« Ответ #3 : 11-03-2006 04:02 » 

Если sql.add('select поле1,поле2 ... from proc1(:par1, :par2)'), то получается ошибка: таблица с таким именем как proc1 не найдена. вообще дело в том, что выходной параметр - переменная в хранимой процедуре типа bit, которая принимает значение в зависимости от входных параметров. в  Query Analyzer я пишу так
declare @start bit
exec  passwords 'Радчук', '111', @start output
print @start
 и вижу результат.
в приложении : query1.sql.add(' exec proc1 :par1, :par2, :par3 ')
первых два переметра входные ptInput, третий выходной ptOutput, но получается ошибка :Error creating cursor handle.  каким образом указать выходной параметр?
« Последнее редактирование: 13-12-2007 19:48 от Алексей1153++ » Записан
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 11-03-2006 19:19 » 

Exec proc1(:par1, par2, ...) вызывается в том случае если Stored procedure не возвращает данных. В случае описанном Вами нужно применять
Query.Text:= 'select * from proc1(:par1, :par2)';
Query.Execute;
В случае не возвращения данных (сообщения об ошибке) нужно смотреть в тексте процедуры наличие команд возврата данных, "suspend" например.

« Последнее редактирование: 13-12-2007 19:48 от Алексей1153++ » Записан

С уважением, Oldy.
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 12-03-2006 06:49 » 

Что за типа bit? Из какого типа это баз данных (MSSQL, Oracl...)? Уточни тип баз данных и какой именно компонент Query ты используешь (BDE, ADOQuery ...). Иначе гадать можно очень долго Улыбаюсь
Возможно твой компонент Query не поддерживает этот тип данных.
Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
Solo
Гость
« Ответ #6 : 12-03-2006 10:29 » 

База данных MSSQL. Тип bit используется для хранения данных, которые могут принимать только два значения, выделяется только один бит.
тип bit соответствует типу boolean. 
Компонент Query BDE, соответственно параметр Query типа boolean. 
Записан
Solo
Гость
« Ответ #7 : 12-03-2006 10:30 » 

Компонент Query BDE, соответственно параметр Query типа ptBoolean.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines