将查询存储为表中的列,并将查询的输出处理到另一个表

时间:2016-06-22 21:13:50

标签: sql database plsql cursor

我基本上需要自动化这种情况。 1-我有一个表STATS_QUERIES,如下所示:    STATS_QUERIES

2 - 我有一个输出表,我必须存储结果(通过引用前一个表)。它看起来像这样:  STATS_RESULTS_CARD

3- PL / SQL逻辑:

For each row in STATS_QUERIES
•   If the object type for the current query is Card:
o        Execute the query in the current row and store the results in STATS_RESULTS_CARD
•   Else if the object type of the current query is Node:
o   …
•   And so on.
   End Loop
   Commit.

如何从表中逐个执行该行(目标是运行存储在STATS_QUERIES表中的查询)并存储在STATS_RESULT_CARD中。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

CREATE PROCEDURE test
AS
   TYPE t_c IS REF CURSOR;

   c     t_c;
   s     VARCHAR2 (4000);
   src   STATS_RESULT_CARD%ROWTYPE;
BEGIN
   FOR c1 IN (SELECT *
                FROM stats_queries)
   LOOP
      IF c1.object = 'Card' THEN
         OPEN c FOR c1.query;

         FETCH c INTO src;

         CLOSE c;

         INSERT INTO STATS_RESULT_CARD
              VALUES src;
      ELSE
         -- other code here
         NULL;
      END IF;
   END LOOP;
END;

您应该在查询中有STATDATE,或者您可以使用记录而不是STATS_RESULT_CARD%ROWTYPE,然后使用插入使用字段名称