A Oracle Consulta - Uso SAPO
Pergunta
Eu tenho usado esse tipo de funcionalidade antes, mas é MSSQL, mas não pode fazê-lo funcionar para Oracle, alguma dica?
DECLARE
MY_TBL NUMBER := 1;
BEGIN
IF(MY_TBL > 0) THEN
SELECT * FROM MY_TBL ORDER BY MY_TBL_ID DESC;
END IF;
END;
O que eu gostaria de ter é um conjunto variável de sinalizador como zero ou um, se alguém exibir os resultados, se for zero salto. Este é apenas um script simples para ter todas as minhas tabelas e selecione declarações em bandeira um roteiro ans os que eu preciso para ver os resultados para. Então, se eu tenho 5 tabelas que eu usaria a função ELSIF para adicionar mais como este
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;
e assim por diante. Obrigado por qualquer ajuda sobre isso, --Phill
EDIT:
Aqui está o que eu tenho:
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
Solução
Oracle
não pode retornar conjuntos de resultados de um procedimento armazenado como SQL Server
faz.
Declare cliend variáveis ??de cursor lado e voltar a eles:
Para exibir um cursor em 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