使用游标

时间:2019-07-17 11:45:27

标签: oracle plsql

我需要有关动态SQL和游标的帮助。 我有具有DEFINE变量的存储过程。 如何使用光标填充DEFINE变量?

我想使用另一个表作为游标的源并将这些结果插入另一个表。

以下是有关我的问题的简化示例:

CREATE OR REPLACE PROCEDURE usp_TEST
AS
BEGIN

DEFINE vTable = 'TABLE_NAME'; -- How I can create cursor loop, so I can loop and change this table name using another table as source?


INSERT INTO results
WITH CTE_main
AS
(
    SELECT 
        TABLE_NAME 
    FROM dest_TABLES
)
SELECT 
    'SELECT * FROM ' || '&vTable' || ' source INNER JOIN ' ||  cte.TABLE_NAME || ' dest ON source.ID = dest.ID;' AS query 
FROM CTE_main cte

END;

源表仅包含表名:

TABLE_ONE

TABLE_TWO

等...

结果应该是这样的:

SELECT * FROM TABLE_ONE source INNER JOIN DEST_ONE dest ON source.ID = dest.ID;
SELECT * FROM TABLE_ONE source INNER JOIN DEST_TWO dest ON source.ID = dest.ID;
SELECT * FROM TABLE_TWO source INNER JOIN DEST_ONE dest ON source.ID = dest.ID;
SELECT * FROM TABLE_TWO source INNER JOIN DEST_TWO dest ON source.ID = dest.ID;

1 个答案:

答案 0 :(得分:0)

您在追寻类似的东西吗?

page
<html>
  <body>
    <a>I'‘m tagA</a>
  </body>
<html>

? (注:我使用了从句中的两个子查询来模拟表中的数据;您不需要这两个子查询,只需使用表即可。)

不需要PL / SQL,仅需要SQL。不过,您可以采用上面的语句,然后在PL / SQL程序中的插入语句中使用它。