質問
私は前にこの種の機能を使用しますが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;
私は何を持っていると思いますがゼロスキップ場合は、1つは、結果を表示する場合は、0または1に設定されたフラグ変数です。これはすべて私のテーブルと1つのスクリプトANSフラグにselect文私は結果を確認する必要があるものを持っているだけのシンプルなスクリプトです。私は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
解決
Oracle
が行うようSQL Server
は、ストアドプロシージャから結果セットを返すことはできません。
cliend側カーソル変数を宣言し、それらに戻ります:
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
所属していません StackOverflow