Я использую базу данных Oracle, и в настоящее время у меня возникла проблема с созданием Procdure, который должен создать несколько SQL SELECT Outputs. Процедура была успешно завершена, но я не получаю вывод.
Вот мое текущее решение, но я не получаю некоторый вывод:
DECLARE
PROCEDURE myProcedure(schema IN VARCHAR2) AS
BEGIN
FOR myCur IN (
WITH p AS (SELECT 'myFirstOldSchema' AS OLD_SCHEMA,'myFirstNewSchema' AS NEW_SCHEMA FROM DUAL UNION
SELECT 'mySecondOldSchema' AS OLD_SCHEMA,'mySecondNewSchema' AS NEW_SCHEMA FROM DUAL UNION
SELECT 'myThirdOldSchema' AS OLD_SCHEMA,'myThirdNewSchema' AS NEW_SCHEMA FROM DUAL
)
SELECT p.*
FROM p
WHERE p.old_schema = schema)
LOOP
EXECUTE IMMEDIATE
'SELECT '''|| myCur.old_schema ||''' AS SCHEMA_NAME, 'TEST_1' AS SOME_TESTOUTPUT, TO_CHAR(SELECT COUNT(*) FROM '|| old_schema||'.myFirstTable )) AS TABLE_CONTENT FROM dual UNION
'SELECT '''|| myCur.old_schema ||''' AS SCHEMA_NAME, 'TEST_2' AS SOME_TESTOUTPUT, TO_CHAR(SELECT COUNT(*) FROM '|| old_schema||'.mySecondTable )) AS TABLE_CONTENT FROM dual UNION
'SELECT '''|| myCur.old_schema ||''' AS SCHEMA_NAME, 'TEST_3' AS SOME_TESTOUTPUT, TO_CHAR(SELECT COUNT(*) FROM '|| old_schema||'.myThirdTable )) AS TABLE_CONTENT FROM dual';
END LOOP;
END myProcedure;
BEGIN
FOR S IN (SELECT * FROM ROOT_SCHEMA.myTableWithSchema)
LOOP
-- First loop S.mySchemata represent the value 'myFirstOldSchema'
-- Second loop S.mySchemata represent the value 'mySecondOldSchema'
-- Third loop S.mySchemata represent the value 'myThirdOldSchema'
myProcedure(S.mySchemata);
END LOOP
END;
Мне нужен выходной результат примерно так ( в лучшем случае сортируется по столбцу SCHEMA_NAME):
SCHEMA_NAME | SOME_TESTOUTPUT | TABLE_CONTENT
---------------------------------------------------
myFirstOldSchema | TEST_1 | 90
---------------------------------------------------
mySecondOldSchema | TEST_2 | 77
---------------------------------------------------
myThirdOldSchema | TEST_3 | 36
Как решить эту проблему? Нужно работать с некоторыми временными переменными и другим курсором? И можно дополнить SQL SELECT Statments предложением ORDER BY в конце?
Большое спасибо за помощь!