Страница 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