Как достать из столбца значение для сравнения?

Sasha87
Дата: 14.11.2008 11:23:00
Необходимо написать процедуру, которая выполнялась бы только в том случае если другой запрос выбирающий записи из таблицы вернет значение больше нуля.
что писать в теле процедуры??

например такая конструкция работает

create or replace procedure "WE12"
(flag IN BOOLEAN)
is
begin
BEGIN
IF (FLAG)
THEN
/* выполнение блока*/
END IF;
END;
end;

а вот такая нет

create or replace procedure "WE12"
(flag IN BOOLEAN)
is
begin
BEGIN
IF (FLAG AND (select count(*) from
(SELECT "N"
FROM "FS_TIMETABLE_TRAININGS"
WHERE "FS_TIMETABLE_TRAININGS"."ID_COMMAND" = 3) == 0))
THEN
/* выполнение блока*/
END IF;
END;
end;

потому что селект возвращает столбец со значением count.
Как достать из этого столбца значение для сравнения?
Добрый Э - Эх
Дата: 14.11.2008 11:23:58
объявить переменную и сделать в неё INTO...
Sasha87
Дата: 14.11.2008 11:37:52
спасибо. простите за такой тупой вопрос
Саша87
Дата: 16.11.2008 17:08:08
а как объявить переменную для хранения таблицы
и потом её использовать в процедуре?

И вообще можно ли так делать?

DECLARE test table (col1 NUMBER, col1 NUMBER); <- не работает
A.K.
Дата: 16.11.2008 18:41:48
Не пытайтесь действовать по аналогии с MS SQL. Те решения, которые общеприняты там, не подходят или плохо подходят для Oracle. Лучше возьмите, почитайте книжку именно по Oracle.
A.K.
Дата: 16.11.2008 18:49:08
Саша87
...
DECLARE test table (col1 NUMBER, col1 NUMBER); <- не работает

И не будет работать. В Oracle нет локальных временных таблиц. В Oracle есть PL/SQL-таблицы, синтаксически близкие к массивам. В Oracle используется явная компиляция хранимых процедур, при которой разрешаются все ссылки на объекты БД и проверяется их валидность.