Sql Oracle循环语句

Sql Oracle循环语句,sql,oracle,loops,Sql,Oracle,Loops,我需要一些关于如何编写select/函数的建议,该函数通过表的每一行,根据预期结果运行select结果,然后根据测试结果将每个id为1或0的行写入新表 按照我对这个问题的理解,它是关于动态SQL的。下面是一个例子: 表;我选择将结果存储到同一个表中。如果您有另一个,很容易修复它-您将使用insert,而不是update SQL> create table test 2 (id number, 3 name varchar2(20), 4

我需要一些关于如何编写select/函数的建议,该函数通过表的每一行,根据预期结果运行select结果,然后根据测试结果将每个id为1或0的行写入新表


按照我对这个问题的理解,它是关于动态SQL的。下面是一个例子:

表;我选择将结果存储到同一个表中。如果您有另一个,很容易修复它-您将使用
insert
,而不是
update

SQL> create table test
  2    (id       number,
  3     name     varchar2(20),
  4     script   varchar2(200),
  5     result   number);

Table created.
样本数据:

SQL> insert into test (id, name, script) values (1, 'number of employees', 'select count(*) from emp');

1 row created.

SQL> insert into test (id, name, script) values (2, 'highest salary'     , 'select max(sal) from emp');

1 row created.
测试:

SQL> declare
  2    l_cnt number;
  3  begin
  4    for cur_r in (select id, name, script from test) loop
  5      execute immediate cur_r.script into l_cnt;
  6      update test set result = l_cnt where id = cur_r.id;
  7    end loop;
  8  end;
  9  /

PL/SQL procedure successfully completed.
结果:

SQL> select * From test;

        ID NAME                 SCRIPT                             RESULT
---------- -------------------- ------------------------------ ----------
         1 number of employees  select count(*) from emp               14
         2 highest salary       select max(sal) from emp             5000

SQL>

谢谢你的建议。我编写这段代码是为了运行脚本并更新结果表中的结果字段。我总是希望在脚本运行的日期旁边写一行新词。例如,在星期一,结果为1,然后在星期二,结果为0。这意味着我将有3行用于星期一,3行用于星期二,并且测试表中的id相同。不知道如何编辑它

申报

CURSOR c_wrk IS 
    SELECT 
        id, 
        name,
        script
    FROM 
        test
    ;  
    w_rersult number;
开始


你试过什么吗?有什么您不明白的吗?请编辑问题并显示所有表定义和预期输出。谢谢。样本数据最好以表格形式呈现。有关如何创建美观的表格的一些提示,请参见。
FOR r_wrk IN c_wrk
LOOP
   execute immediate r_wrk.script into w_rersult;

UPDATE 
            result
        SET 
            result = w_rersult
        WHERE 
            id = r_wrk.id;

END LOOP;
end;