【问题标题】:Storing the query as a column in a table and processing the output of the query into another table将查询存储为表中的列并将查询的输出处理到另一个表中
【发布时间】:2016-06-22 21:13:50
【问题描述】:

我需要基本上自动化这个场景。 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 中。

非常感谢任何帮助

【问题讨论】:

  • 提供了图片的链接。
  • 我认为你想做的是创建一个存储过程,但你的逻辑让我迷失了。
  • @DaveKelly,哪部分逻辑,你看不懂。当然,我想创建一个存储过程。

标签: sql database plsql cursor


【解决方案1】:

你可以这样使用:

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,然后在插入时使用字段名称

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多