![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запрос [D7, MSSQL]
NigthSkif © (2006-11-13 06:52:00)Доброе время суток всем. Скажите, что не так
q := TQuery.Create(nil);
q.DatabaseName := 'DB';
q.Close;
q.Params.CreateParam(ftInteger, 'Rez', ptOutput);
q.Params.CreateParam(ftString, 'NewName', ptInput);
q.SQL.Clear;
q.Params.ParamByName('NewName').AsString := edtName.Text;
q.SQL.Add('IF EXISTS (SELECT Nam FROM dbNames WHERE Nam= :NewName) ' +
'SELECT begin :Rez=1 end '+
'ELSE ' +
'begin ' +
'INSERT INTO dbNames(Nam) ' +
'VALUES(NewName) ' +
'SELECT :Rez=0 ' +
'end');
q.ExecSQL;
i := q.Params.ParamByName('Rez').AsInteger;
q.Close;
q.Destroy;
Когда выполнятся, говорит следующее: Field Rez=1 is of an unknown type.
Чем лечить?
Desdechado (2006-11-13 11:47:00) [1]Anatoly Podgoretsky © (13.11.06 10:21) [2]
Это зависит от настроек TQuery, но поскольку автор их не меняет, то действительно у него все параметры затираются.
5. Обращение Params.ParamByName несколько избыточно, достаточно просто ParamByName
Anatoly Podgoretsky (2006-11-13 10:21:00) [2]3. и бессмысленно, они все равно уничтожаются несколькими строками ниже и не один раз
Johnmen (2006-11-13 10:04:00) [3]
> Скажите, что не так
1. q.Close;
Зачем закрывать неоткрытую дверь?
2. q.SQL.Clear;
Зачем выливать воду из пустого стакана?
3. Такое создание параметров - это бред. Как работать с параметрическим запросом написано в F1 с примерами.
4. И самое главное
IF EXISTS ....
Это не запрос!