Почему не работает $ifnotexists ???

catsy
Дата: 25.09.2005 13:20:13
Очень простой код внутри ХП. Если такой записи нет, вставить, иначе обновить. Все, как описано в IBExpert.
begin
{$ifnoexists select a from tbl_A where guid = :guid}
insert into tbl_A (guid, b) values (:guid, :b)
{$else}
update tbl_A 
set b = :b
where guid = :guid
{$endif}
rows_count = row_count;
suspend;
end;
При попытке откомпилить говорит : неизвестный токен select.
Что я делаю не так?
Спасибо.
Kull Damned
Дата: 25.09.2005 13:45:43
catsy, скрипто-расширения IBExpert'а не входят SQL сервера.

Posted via ActualForum NNTP Server 1.3

Dik76
Дата: 25.09.2005 14:02:49
Сколько же вреда от этих инструментов... народ совсем не понимает, что делает.
catsy
Дата: 25.09.2005 14:54:51
В таком случае приведите пожалуйста, пример того же самого, но с простой конструкцией if exists ... then ... else
так как с этим у меня тоже не работает... и нет доки подходящей. Кстати подскажите, где взять полноценную доку по SQL для FireBird 1.5?
Сэнькс
Кстати, в документации по IBExpress не было ни слова сказано о том, что это расширение только для данного инструмента, а читать мысли я пока еще не умею.
fynda
Дата: 25.09.2005 15:05:52
catsy
В таком случае приведите пожалуйста, пример того же самого, но с простой конструкцией if exists ... then ... else
так как с этим у меня тоже не работает...


Ты лучше напиши как у тебя не работает, а народ подскажет где. А на предложения "напишите за меня мой код" тутошние гуры обычно обижаютца. ;)

catsy

и нет доки подходящей. Кстати подскажите, где взять полноценную доку по SQL для FireBird 1.5?


http://www.ibase.ru/firebird.htm#doc
Kull Damned
Дата: 25.09.2005 15:13:20
В таком случае приведите пожалуйста, пример того же самого, но с простой конструкцией if exists ... then ... else
Примерно так:
begin
  if (not exists(select first 1 a from tbl_A where guid=:guid))
    insert into tbl_A (guid, b) values (:guid, :b);
  else
    update tbl_A set b=:b
      where guid = :guid;
  rows_count=row_count;
  suspend;
end;
и нет доки подходящей. Кстати подскажите, где взять полноценную доку по SQL для FireBird 1.5?
http://www.ibase.ru - там скачивай доки по Interbase 6.5 (библия - это LangRef.pdf), и в разделе Firebird идут Release Notes, в которых описаны изменения. Увы на полноценный пакет документации нужны людские ресурсы, коих как всегда не хватает.
Кстати, в документации по IBExpress не было ни слова сказано о том, что это расширение только для данного инструмента, а читать мысли я пока еще не умею.
Инструмент расчитан на людей, которые в курсе SQL и что называется "в теме". Я, кстати, не знаю этих расширений. :)
fraks
Дата: 25.09.2005 15:25:34
catsy
Кстати, в документации по IBExpress
IBExpert
catsy
не было ни слова сказано о том, что это расширение только для данного инструмента, а читать мысли я пока еще не умею.

Дока по IBExpert. Почему там должно быть написано про синтаксис FireBird?
catsy
Дата: 25.09.2005 15:30:58
Спасибо, Kull Damned, за пример.
Я попробую именно так.
Я скачала указанный LngRef, но в его индексе не нашлось слова "exists".
Поэтому придется методом научного тыка.
fraks
Дата: 25.09.2005 15:40:51
catsy
Я скачала указанный LngRef, но в его индексе не нашлось слова "exists".


Доку читать надо по порядку, что бы получить хотя бы общее представление. Потом уже можно в ней что-то искать. Необходим начальный минимум знаний о предмете прежде чем бросаться что-то делать.

Ищи exists в синтаксисе оператора select.
Adobe Acrobat Reader умеет искать и не по индексу (бывает акробат с поиском а бывает - без).

А вообще-то exists - это стандартная конструкция SQL, поэтому подробно про нее надо читать у Грабера в "Понимание SQL". В инете эта книжка тоже есть но говорят что перевод плохой.
catsy
Дата: 25.09.2005 17:26:58
.
автор
Доку читать надо по порядку, что бы получить хотя бы общее представление. Потом уже можно в ней что-то искать. Необходим начальный минимум знаний о предмете прежде чем бросаться что-то делать.



А вообще-то exists - это стандартная конструкция SQL, поэтому подробно про нее надо читать у Грабера в "Понимание SQL". В инете эта книжка тоже есть но говорят что перевод плохой.


Что ты говоришь? Начальный минимум - это ты про SQL, что ли? Извини, дружище, я просто 2 года пашу на SQL Server, как-то смешно такое читать.
Проблема ведь не в том, что я не знаю, что такое exists, а в том, что каждая база извращается по-своему, кому-то обязательны скобки, а кому-то нет и т.д. Просто использовать тот синтаксис, который я использовала ранее в SQL Server, - не работает. (возможно, все дело именно в скобках, вечно у меня на них заедает)

автор
Ищи exists в синтаксисе оператора select.

Select - вещь самодостаточная, и она не должна ничего знать ни о каком Exist. О нем должен знать IF, где собственное, и используется exists, но в доке о нем ни слова.