Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Использование IBStoredProc [D6, FB 1.5.2]


Term ©   (2005-08-29 14:06:00) 

Гдето попадалось что использовать IBStoredProc нежелательно ввиду глючности последнего, но возникла необходимость его использования. Есть аналогичный компонент в фибсах(раньше с этими компонентами не работал и не устанавливал поэтому спрашиваю), и какие есть рекомендации

Без этого компонента не обойтись


Term   (2005-08-29 18:02:00) [1]

не использование Query не подходит т.к. нужно в течении короткого времени пересадить приложение на FB, в приложении полно TADOStoredProc, время просто поджимает


Карелин Артем   (2005-08-29 17:41:00) [2]

Делаем код вида Execute procedure с помощью указанного кода и не думаем о проблемах.
А вообще у меня несколько сот рабочих мест без проблем используют довольно активно сабж и проблем не было.
function GenerateSQL(Database:TIBDatabase;const SPName:string):string;
var
 Query : TIBSQL;
 input : string;
begin
 Database.InternalTransaction.StartTransaction;
 Query := TIBSQL.Create(Database);
 try
   Query.Database := DataBase;
   Query.Transaction := Database.InternalTransaction;
   Query.SQL.Text := 'SELECT RDB$PARAMETER_NAME,  RDB$PARAMETER_TYPE ' + {do not localize}
                      'FROM RDB$PROCEDURE_PARAMETERS ' + {do not localize}
                      'WHERE RDB$PROCEDURE_NAME = ' + {do not localize}
                      '''' + FormatIdentifierValue(Database.SQLDialect,
                              QuoteIdentifier(Database.SQLDialect, SPName)) + '''' +
                      ' ORDER BY RDB$PARAMETER_NUMBER'; {do not localize}
   Query.Prepare;
   Query.GoToFirstRecordOnExecute := False;
   Query.ExecQuery;
   while (not Query.EOF) and (Query.Next <> nil) do
   begin
     if (Query.Current.ByName('RDB$PARAMETER_TYPE').AsInteger = 0) then {do not localize}
     begin
       if (input <> '') then
         input := input + ', :' +
           QuoteIdentifier(Database.SQLDialect,trim(Query.Current.ByName('RDB$PARAMETER_NAME').AsString)) {do not localize}
       else
         input := ':' +
           QuoteIdentifier(Database.SQLDialect, trim(Query.Current.ByName('RDB$PARAMETER_NAME').AsString)); {do not localize}
     end
   end;
   if Input <> '' then
     Result := 'Execute Procedure ' + {do not localize}
         QuoteIdentifier(Database.SQLDialect, SPName) + '(' + input + ')'
   else
     Result := 'Execute Procedure ' + {do not localize}
         QuoteIdentifier(Database.SQLDialect, SPName);
 finally
   Query.Free;
   Database.InternalTransaction.Commit;
 end;
end;


Domkrat   (2005-08-29 15:47:00) [3]

C FibPlus все ок.


Term   (2005-08-29 15:13:00) [4]

понятно, а с фибсами как дело обстоит


Domkrat   (2005-08-29 14:41:00) [5]

ibase.ru

>В общем случае не рекомендуется к использованию, т.к. имеет >застарелую проблему с обработкой ошибок. При самостоятельном >исправлении данной ошибки в коде (IBStoredProc.pas) может быть >использован.

Ошибка описана сдесь

http://www.ibase.ru/devinfo/ibstp.htm


Term   (2005-08-29 14:30:00) [6]

народ есть кто живой, кто может просветить относительно использования этого компонента


Наверх

Титульная страница Поиск, карта сайта Написать письмо