Я уже использовал этот тип функций, но MSSQL, но не могу заставить его работать на Oracle, какие-либо советы?
DECLARE
MY_TBL NUMBER := 1;
BEGIN
IF(MY_TBL > 0) THEN
SELECT * FROM MY_TBL ORDER BY MY_TBL_ID DESC;
END IF;
END;
То, что я хотел бы иметь, это переменная флага, установленная на ноль или единицу, если один отображает результаты, если ноль пропустить. Это простой скрипт, в котором все мои таблицы и операторы выбора находятся в одном скрипте и помечают те, для которых мне нужны результаты. Поэтому, если у меня есть 5 таблиц, я бы использовал функцию ELSIF, чтобы добавить еще как
DECLARE
MY_TBL1 NUMBER := 1;
MY_TBL2 NUMBER := 1;
BEGIN
IF(MY_TBL1 > 0) THEN
SELECT * FROM MY_TBL1 ORDER BY MY_TBL1_ID DESC;
ELSIF(MY_TBL2 > 0) THEN
SELECT * FROM MY_TBL2 ORDER BY MY_TBL2_ID DESC;
END IF;
END;
и так далее. Спасибо за любую помощь в этом,
--Phill
EDIT:
Вот что у меня есть:
VAR result_set REFCURSOR
DECLARE
my_tbl_1 NUMBER := 1;
my_tbl_2 NUMBER := 0;
my_tbl_3 NUMBER := 0;
BEGIN
IF (my_tbl_1 > 0)
THEN
BEGIN
OPEN :result_set FOR
SELECT *
FROM my_tbl_1
ORDER BY my_tbl_1_id DESC;
END;
ELSIF (my_tbl_2 > 0)
THEN
BEGIN
OPEN :result_set FOR
SELECT *
FROM my_tbl_2
ORDER BY my_tbl_2_id DESC;
END;
ELSIF (my_tbl_3 > 0)
THEN
BEGIN
OPEN :result_set FOR
SELECT *
FROM my_tbl_3
ORDER BY my_tbl_3_id DESC;
END;
END IF;
END;
PRINT result_set