Текущий архив: 2005.10.09;
Скачать: CL | DM;
Вниз
Использование IBStoredProc Найти похожие ветки
← →
Term © (2005-08-29 14:06) [0]Гдето попадалось что использовать IBStoredProc нежелательно ввиду глючности последнего, но возникла необходимость его использования. Есть аналогичный компонент в фибсах(раньше с этими компонентами не работал и не устанавливал поэтому спрашиваю), и какие есть рекомендации
Без этого компонента не обойтись
← →
Term © (2005-08-29 14:30) [1]народ есть кто живой, кто может просветить относительно использования этого компонента
← →
Domkrat © (2005-08-29 14:41) [2]ibase.ru
>В общем случае не рекомендуется к использованию, т.к. имеет >застарелую проблему с обработкой ошибок. При самостоятельном >исправлении данной ошибки в коде (IBStoredProc.pas) может быть >использован.
Ошибка описана сдесь
http://www.ibase.ru/devinfo/ibstp.htm
← →
Term © (2005-08-29 15:13) [3]понятно, а с фибсами как дело обстоит
← →
Domkrat © (2005-08-29 15:47) [4]C FibPlus все ок.
← →
Карелин Артем © (2005-08-29 17:41) [5]Делаем код вида 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;
← →
Term © (2005-08-29 18:02) [6]не использование Query не подходит т.к. нужно в течении короткого времени пересадить приложение на FB, в приложении полно TADOStoredProc, время просто поджимает
Страницы: 1 вся ветка
Текущий архив: 2005.10.09;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.013 c