Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Синтаксис использования TIBStoredProc 
V
    Опции темы
VladBD
  Дата 24.1.2007, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 19.11.2006

Репутация: 1
Всего: 5



Есть хранимая процедура №1 с одним параметром
Есть хранимая процедура №2 :
Код

CREATE PROCEDURE SET_VES01 (PID_OLDSTATUS SMALLINT, PID_NEWSTATUS SMALLINT, PID_ACTION SMALLINT)
AS
DECLARE VARIABLE PID_LINK INTEGER;
begin
  /*берем все записи со статусом=pID_OLDSTATUS*/
  FOR SELECT ID_LINK FROM TBL1 WHERE (ID_ACTION=:pID_ACTION) AND (ID_STATUS=:pID_OLDSTATUS) INTO PID_LINK
  DO
  BEGIN
    UPDATE TBL1 SET MASS=11, ID_STATUS=:pID_NEWSTATUS WHERE (ID_LINK=:PID_LINK);
    UPDATE TBL2 SET ID_STATUS=:pID_NEWSTATUS WHERE (ID_LINK=:PID_LINK);
  END
  suspend;
end


вызываю сначала ХП №1
Код

    DM.IBStoredProc1.Close; DM.IBStoredProc1.UnPrepare;
    DM.IBStoredProc1.StoredProcName := 'SET_LOTPARAMETRS';
    DM.IBStoredProc1.Params.ParamValues['PID_LINK'] := DM.q_Tmp1.FieldValues['ID_LINK'];
    DM.IBStoredProc1.Prepare;
    if DM.IBStoredProc1.Prepared then DM.IBStoredProc1.ExecProc;


вызываю ХП №2
Код

      DM.IBStoredProc1.Close; DM.IBStoredProc1.UnPrepare;
      DM.IBStoredProc1.StoredProcName := 'SET_VES01';
      //DM.IBStoredProc1.Prepare;
      DM.IBStoredProc1.Params.ParamValues['PID_OLDSTATUS'] := pID_OLDSTATUS;
      DM.IBStoredProc1.Params.ParamValues['PID_NEWSTATUS'] := pID_NEWSTATUS;
      DM.IBStoredProc1.Params.ParamValues['PID_ACTION']    := pID_ACTION;
      DM.IBStoredProc1.Prepare;
      if DM.IBStoredProc1.Prepared then DM.IBStoredProc1.ExecProc;


ХП №1 - выполняется. Далее в Хп №2 ругается на строке с параметром 'PID_OLDSTATUS'.
Error - Параметр 'PID_OLDSTATUS' - не найден...
Перед ним делаю Prepare - не ругается. Как правильно вызывать ХП и почему тогда сработала ХП №1 - если Prepare стоит после. 
PM MAIL   Вверх
voha
Дата 24.1.2007, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 22.1.2007
Где: Артемовск

Репутация: нет
Всего: нет



//DM.IBStoredProc1.Prepare; может нужно открыть эту сроку
PM MAIL   Вверх
VladBD
Дата 24.1.2007, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 19.11.2006

Репутация: 1
Всего: 5



Когда открываю строку все работает - вопрос где правильно должен стоять Prepare?
 или может есть еще какая-нить функция для того чтобы компонент увидел мои параметры...
PM MAIL   Вверх
voha
Дата 24.1.2007, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 22.1.2007
Где: Артемовск

Репутация: нет
Всего: нет



F1
Цитата

Call Prepare to bind a stored procedure's parameters before calling ExecProc to execute the procedure. Prepare readies a stored procedure's parameters and informs the server of the stored procedure's readiness. These steps allocate system resources and optimize the query for server performance.



как ты думаешь?
PM MAIL   Вверх
VladBD
Дата 24.1.2007, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 19.11.2006

Репутация: 1
Всего: 5



Цитата

как ты думаешь? 

а почему в вызове ХП №1 prepare идет после присваивания значения параметра и нет ошибки -> как ты думаешь

Это сообщение отредактировал(а) VladBD - 24.1.2007, 13:40
PM MAIL   Вверх
Vas
Дата 24.1.2007, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Цитата(VladBD @  24.1.2007,  13:39 Найти цитируемый пост)
а почему в вызове ХП №1 prepare идет после присваивания значения параметра и нет ошибки -> как ты думаешь

А случаем в DesignTime для IBStoredProc ниче не прописано? 


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
VladBD
Дата 24.1.2007, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 19.11.2006

Репутация: 1
Всего: 5



все свойства для всех компонентов заполняю в программе
вот скрин

Присоединённый файл ( Кол-во скачиваний: 19 )
Присоединённый файл  qqq.JPG 19,82 Kb
PM MAIL   Вверх
voha
Дата 24.1.2007, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 22.1.2007
Где: Артемовск

Репутация: нет
Всего: нет



полазь отладчиком по 
procedure TIBStoredProc.SetProcName(Value: string);
там наверняка найдешь ответ
PM MAIL   Вверх
VladBD
Дата 25.1.2007, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 19.11.2006

Репутация: 1
Всего: 5



Ну в общем в книге у меня стоит Prepare перед ParamByName('PAR').Value := 10
a в hlp
Код

IBStoredProc1.Prepare;
IBStoredProc1.Params[0].AsString := Edit1.Text;
IBStoredProc1.ExecProc;


в общем ставлю перед указанием параметров - вроде работает...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0790 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.