Sql Oracle循环语句
我需要一些关于如何编写select/函数的建议,该函数通过表的每一行,根据预期结果运行select结果,然后根据测试结果将每个id为1或0的行写入新表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
按照我对这个问题的理解,它是关于动态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;