Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как написать в Query текст с параметрами / 9 сообщений из 9, страница 1 из 1
02.04.2003, 15:17
    #32131913
kas
kas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать в Query текст с параметрами
один Query используеться для разных целей, как в него написать sql с параметрами, что бы потом в них писать как query.ParamByName('param').AsInteger:= ....?
делаю так:
qryMeters.sql.clear;
qryMeters.SQL.Add('select *');
qryMeters.SQL.Add('from GKH.METERS');
qryMeters.SQL.Add('where (OBJECT_ID= :ObjectID) and (TYPE_FLG = :TypeFlg)'); qryMeters.SQL.Add('order by TYPE_ID');

потом не знаю что делать!

в параметры :ObjectID, :TypeFlg и надо будет потом писать
qryMeters.ParamByName('ObjectID').AsInteger:= ....!
...
Рейтинг: 0 / 0
02.04.2003, 15:22
    #32131917
SmaLL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать в Query текст с параметрами
kas писал:
один Query используеться для разных целей, как в него написать sql с параметрами, что бы потом в них писать как query.ParamByName('param').AsInteger:= ....?
делаю так:
qryMeters.sql.clear;
qryMeters.SQL.Add('select *');
qryMeters.SQL.Add('from GKH.METERS');
qryMeters.SQL.Add('where (OBJECT_ID= :ObjectID) and (TYPE_FLG = :TypeFlg)'); qryMeters.SQL.Add('order by TYPE_ID');

потом не знаю что делать!

в параметры :ObjectID, :TypeFlg и надо будет потом писать
qryMeters.ParamByName('ObjectID').AsInteger:= ....!

Правильно делаешь.
После qryMeters.SQL.Add.... пишешь qryMeters.ParamByName... для всех параметров, а потом qryMeters.Open;
и будет тебе счастье.
...
Рейтинг: 0 / 0
03.04.2003, 11:19
    #32132469
Лекс[КВ]
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать в Query текст с параметрами
и не забудь, что если параметры зависят от какого-то условия, то после
qryMeters.SQL.Add('where (OBJECT_ID= :ObjectID) and (TYPE_FLG = :TypeFlg)'); qryMeters.SQL.Add('order by TYPE_ID');
ставишь проверку выполнения условия
if ... then qryMeters.ParamByName('ObjectID').AsInteger:= ....
else qryMeters.ParamByName('ObjectID').AsInteger:= ....
...
Рейтинг: 0 / 0
04.04.2003, 14:21
    #32133625
bigman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать в Query текст с параметрами
а как насчет счастья с выходными параметрами ?
...
Рейтинг: 0 / 0
04.04.2003, 16:46
    #32133848
SmaLL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать в Query текст с параметрами
select возвращает dataset, какие ещЁ выходные параметры??
...
Рейтинг: 0 / 0
07.04.2003, 09:45
    #32134364
bigman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать в Query текст с параметрами
Ну если писать по науке, то в Query есть выходные параметры.
Как присвоить им возвращаемые значения из Stored Proc ?
...
Рейтинг: 0 / 0
07.04.2003, 10:00
    #32134373
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать в Query текст с параметрами
2 bigman

Ну если писать по науке, то в Query есть выходные параметры.
Как присвоить им возвращаемые значения из Stored Proc ?


Выходных параметров в запросе нет. Они есть у хранимых процедур. Если надо вызвать хп с выходными параметрами, то в TQuery пишут (для MS SQL)

Код: plaintext
EXEC dbo.SomeProc :InputParam, :OutputParam OUTPUT


или используют TStoredProc.

Тока, если ты работаешь с TQuery. То и параметры, как и SQL надо добавлять.

Вот тебе пример динамического создания и использования TStoredProc.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
function RunGranted(DB: TDatabase): boolean;
var
  Proc: TStoredProc;
  Msg: string;
  CheckResult: integer;
begin
  Result := False;
  Proc := TStoredProc.Create(Application);
  try
    Proc.DatabaseName := DB.DatabaseName;
    Proc.StoredProcName := 'usp_CheckAppPermissions';
    Proc.Params.CreateParam(ftString, '@App', ptInput);
    Proc.Params.CreateParam(ftInteger, 'Result', ptResult);
    Proc.ParamByName('@App').AsString := AnsiUpperCase(ExtractFileName(Application.ExeName));
    try
      Proc.ExecProc;
      CheckResult := Proc.ParamByName('Result').AsInteger;
      if CheckResult =  0  then
        ...
      else
        Result := True;
    except
      on E: Exception do begin
         ...
      Exit;
      end;
    end;
  finally
    Proc.Free;
  end;
end;


Если используешь наследников TCustomADODataSet, то там у коллекции параметров есть метод Refresh.
...
Рейтинг: 0 / 0
07.04.2003, 10:05
    #32134375
bigman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать в Query текст с параметрами
я немного не про это ....

ptOutput - Used to output a field value. Identifies a parameter used by a stored procedure to return values to an application.

Есть возможность вернуть значение из Stored Proc через pyOutPut параметр.
Но как ?
...
Рейтинг: 0 / 0
07.04.2003, 10:08
    #32134379
bigman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать в Query текст с параметрами
все я понял. Вопрос снимаю. Всем спасибо
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как написать в Query текст с параметрами / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]