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

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

Запрос [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 ....
Это не запрос!


Наверх

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