Директива Case

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
Solo
Сообщения: 108
Зарегистрирован: 18 апр 2005, 04:05

Директива Case

Сообщение 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

Re: Директива Case

Сообщение 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

Ответить