| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Firebird, Interbase > Запрос с IF |
| Автор: TaNK 24.1.2011, 10:48 | ||
Уважаемые, есть скрипт написанный мною и работающий в MS SQL 2000 а вот такой же но в firebird не могу сделать
|
| Автор: password 24.1.2011, 12:49 | ||
Для функций и процедур, что-то типа этого:
|
| Автор: Akella 24.1.2011, 13:16 | ||
| if exists... Добавлено через 1 минуту и 44 секунды
execute block - это тоже самой, что и процедура |
| Автор: Deniz 24.1.2011, 14:18 | ||
| TaNK, не совсем правильно делать такой IF. А что если запрос вернет несколько записей? Лучше использовать, как уже сказал Akella
|
| Автор: TaNK 24.1.2011, 14:31 | ||
Уважаемые, я уверен что в этой таблице будет всего одна запись, и мне хранимые процедуры или функции не подходят, мне в IF нужно проверить на true или false и выполнить дейтвия над данными, в MS SQL это легче легкого, но вот тут я столкнулся с проблемой.
|
| Автор: TaNK 24.1.2011, 14:59 |
| http://fotoifolder.ru/view_foto/er0j5lc4odvr/ Query Analyzer SQL SErver 2000 |
| Автор: Deniz 24.1.2011, 16:15 |
| TaNK, так запусти IBExpert и напиши в нем execute block будет тоже-самое. А по запросу вообще прикольно, для таких update'ов if не нужен |
| Автор: TaNK 24.1.2011, 16:21 | ||
вот как подсказали сделать
|
| Автор: Deniz 25.1.2011, 06:54 |
| TaNK, т.е. про exists ты слышать не хочешь. Ну удачи. |
| Автор: TaNK 25.1.2011, 08:35 | ||
про exists я все понял и даже сделал как все советовали, просто нужно все было это сделать не в хранимке, а про execute block я не знал
|
| Автор: Deniz 25.1.2011, 10:28 |
| TaNK, не тормози, вместо 2-х exists можно написать 1, и зачем выбирать все поля "*" в select? exists проверяет есть ли хоть одна запись во внутреннем select, и кол-во полей не играет роли. |
| Автор: TaNK 25.1.2011, 10:43 | ||
вы так имели ввиду? |
| Автор: Deniz 25.1.2011, 12:10 | ||
| вот теперь все ОК. Если уж совсем придираться, то выборка значения num_ver_bd в select не обязательна, т.е. сервер потратит чуть-чуть доп. времени для возврата значения, которое потом нигде не используется. Совсем правильно:
|
| Автор: TaNK 25.1.2011, 12:49 |
| Deniz, спасибо за наставления! |
| Автор: Frees 25.1.2011, 15:42 | ||
для exists пофик какие ты поля возвращаешь * ничем не отличается от null |
| Автор: Akella 25.1.2011, 17:42 | ||
а я вообще пишу
|
| Автор: Deniz 26.1.2011, 06:19 | ||
Для понимания структуры запроса "*" и "null"/"1" одинаковы. Но если посмотреть какие операции сделает сервер при этих запросах, то для "*" будут доп. чтения системных таблиц на предмет списка полей и определение значений для этих полей. |