Oracle requêtes - Utilisation TOAD
Question
Je l'ai utilisé ce type de fonctionnalité avant mais il est MSSQL, mais ne peut l'obtenir à travailler pour Oracle, des conseils?
DECLARE
MY_TBL NUMBER := 1;
BEGIN
IF(MY_TBL > 0) THEN
SELECT * FROM MY_TBL ORDER BY MY_TBL_ID DESC;
END IF;
END;
Ce que je voudrais avoir est une variable de drapeau à zéro ou un, si l'on affiche les résultats, si nul saut. Ceci est juste un script simple d'avoir toutes mes tables et des instructions select dans un drapeau ans de script ceux que je besoin de voir les résultats. Donc, si j'ai 5 tables j'utiliser la fonction ELSIF pour ajouter plus comme ceci
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;
et ainsi de suite. Merci pour toute aide à ce sujet, --Phill
EDIT:
Voici ce que j'ai:
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
La solution
Oracle
ne peut pas revenir resultsets d'une procédure stockée comme SQL Server
fait.
Déclarer les variables curseur côté cliend et d'y revenir:
Pour afficher un curseur dans SQL*Plus
:
VAR cur1 REFCURSOR
DECLARE
MY_TBL1 NUMBER := 1;
MY_TBL2 NUMBER := 1;
BEGIN
IF(MY_TBL1 > 0) THEN
BEGIN
OPEN :cur1
FOR
SELECT *
FROM MY_TBL1
ORDER BY
MY_TBL1_ID DESC;
END;
ELSIF (MY_TBL2 > 0) THEN
BEGIN
OPEN :cur1
FOR
SELECT *
FROM MY_TBL2
ORDER BY
MY_TBL2_ID DESC;
END;
END IF;
END;
/
PRINT cur