Страница 1 из 1
Директива Case
Добавлено: 11 июл 2005, 04:16
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]
Re: Директива Case
Добавлено: 11 июл 2005, 09:09
McArty
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 бла бла бла
Добавлено: 11 июл 2005, 09:10
Лысый
Release Notes v.1.5 page 11-12
Добавлено: 11 июл 2005, 09:32
Solo
Лысый писал(а):Release Notes v.1.5 page 11-12
Хммм... я, кажется, с этого и начал вопрос.
А зачем Select Count из хранимой процедуры Pr_Sposob_1?
А просто её нельзя запустить Execute Procedure?
Ладно, сегодня еще раз вчитаюсь.
Добавлено: 11 июл 2005, 10:34
McArty
solo писал(а):
А просто её нельзя запустить Execute Procedure?
А разве можно использовать EXECUTE PROCEDURE в запросе на
выборку данных???
Если ВЫ думаете, что можно использовать CASE, как
оператор в теле ХП или Тригера,то обшибаетесь.
Добавлено: 11 июл 2005, 12:15
Solo
McArty писал(а):
Если ВЫ думаете, что можно использовать CASE, как
оператор в теле ХП или Тригера,то обшибаетесь.
Н-да... Я именно так и думал. Жаль.
Как же быть? Использовать If-Then-Else?
Добавлено: 11 июл 2005, 16:01
McArty
solo писал(а):McArty писал(а):
Если ВЫ думаете, что можно использовать CASE, как
оператор в теле ХП или Тригера,то обшибаетесь.
Н-да... Я именно так и думал. Жаль.
Как же быть? Использовать If-Then-Else?
Select из примера, только
from RDB$DATABASE
,что сделает тоже самое,что и конструкция в Delphi
case
1:
2:
3:
end