IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.
Модератор: kdv
-
Solo
- Сообщения: 108
- Зарегистрирован: 18 апр 2005, 04:05
Сообщение
Solo » 11 июл 2005, 04:16
Директива Case, FireBird 1.5.2
Помогите тупо... э-э-э... начинающему:
Тк и не вкурил, как же использовать директиву Case:
В релизе сказано (дословно не помню - пишу с работы):
Case
when 1 then 'что-то одно'
when 2 then 'что-то другое'
...
Ну и к чему относится 1, 2 или то, что в апострофах?
Я-то чего хочу: процедуру типа Дельфийского кода. К примеру:
Код: Выделить всё
Case IDFIELD of
1 : begin [u]EXECUTE PROCEDURE[/u] Pr_Sposob_1(Параметры); end
2 : begin [u]EXECUTE PROCEDURE[/u] Pr_Sposob_2(Параметры); end
3 : begin [u]EXECUTE PROCEDURE[/u] Pr_Sposob_3(Параметры); end
...
За синтаксис не ручаюсь, это не главное, но смысл вроде передал.
А то приходится использовать
If Then Else , не солидно

[/i]
-
McArty
- Сообщения: 56
- Зарегистрирован: 14 янв 2005, 09:31
Сообщение
McArty » 11 июл 2005, 09:09
solo писал(а):Директива Case, FireBird 1.5.2
Помогите тупо... э-э-э... начинающему:
Тк и не вкурил, как же использовать директиву Case:
В релизе сказано (дословно не помню - пишу с работы):
Case
when 1 then 'что-то одно'
when 2 then 'что-то другое'
...
Ну и к чему относится 1, 2 или то, что в апострофах?
Я-то чего хочу: процедуру типа Дельфийского кода. К примеру:
Код: Выделить всё
Case IDFIELD of
1 : begin [u]EXECUTE PROCEDURE[/u] Pr_Sposob_1(Параметры); end
2 : begin [u]EXECUTE PROCEDURE[/u] Pr_Sposob_2(Параметры); end
3 : begin [u]EXECUTE PROCEDURE[/u] Pr_Sposob_3(Параметры); end
...
За синтаксис не ручаюсь, это не главное, но смысл вроде передал.
А то приходится использовать
If Then Else , не солидно

[/i]
Select
бла бла бла
case FIELD
when ЗНАЧЕНИЕ1 then select count(*) from Pr_Sposob_1
when ЗНАЧЕНИЕ2 then select count(*) from Pr_Sposob_2
бла бла бла
when ЗНАЧЕНИЕN then select count(*) from Pr_Sposob_N
[else ..... ]
end
from бла бла бла
Последний раз редактировалось
McArty 11 июл 2005, 09:11, всего редактировалось 2 раза.
-
Лысый
- Сообщения: 177
- Зарегистрирован: 08 ноя 2004, 08:20
Сообщение
Лысый » 11 июл 2005, 09:10
Release Notes v.1.5 page 11-12
-
Solo
- Сообщения: 108
- Зарегистрирован: 18 апр 2005, 04:05
Сообщение
Solo » 11 июл 2005, 09:32
Лысый писал(а):Release Notes v.1.5 page 11-12
Хммм... я, кажется, с этого и начал вопрос.
А зачем Select Count из хранимой процедуры Pr_Sposob_1?
А просто её нельзя запустить Execute Procedure?
Ладно, сегодня еще раз вчитаюсь.
-
McArty
- Сообщения: 56
- Зарегистрирован: 14 янв 2005, 09:31
Сообщение
McArty » 11 июл 2005, 10:34
solo писал(а):
А просто её нельзя запустить Execute Procedure?
А разве можно использовать EXECUTE PROCEDURE в запросе на
выборку данных???
Если ВЫ думаете, что можно использовать CASE, как
оператор в теле ХП или Тригера,то обшибаетесь.
-
Solo
- Сообщения: 108
- Зарегистрирован: 18 апр 2005, 04:05
Сообщение
Solo » 11 июл 2005, 12:15
McArty писал(а):
Если ВЫ думаете, что можно использовать CASE, как
оператор в теле ХП или Тригера,то обшибаетесь.
Н-да... Я именно так и думал. Жаль.
Как же быть? Использовать If-Then-Else?
-
McArty
- Сообщения: 56
- Зарегистрирован: 14 янв 2005, 09:31
Сообщение
McArty » 11 июл 2005, 16:01
solo писал(а):McArty писал(а):
Если ВЫ думаете, что можно использовать CASE, как
оператор в теле ХП или Тригера,то обшибаетесь.
Н-да... Я именно так и думал. Жаль.
Как же быть? Использовать If-Then-Else?
Select из примера, только
from RDB$DATABASE
,что сделает тоже самое,что и конструкция в Delphi
case
1:
2:
3:
end