مساعدة Oracle Query - باستخدام الضفدع
سؤال
لقد استخدمت هذا النوع من الوظائف من قبل ولكن MSSQL ولكن لا يمكنني الحصول عليه للعمل لأوراكل أو أي نصائح؟
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;
وما إلى ذلك وهلم جرا. شكرا لأي مساعدة في هذا، -
تعديل:
هنا ما لدي:
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