从表中的列执行过程

时间:2017-04-25 13:57:18

标签: sql oracle while-loop execute procedures

请帮我处理ORACLE中的程序。

我有3列的表格:

Create table PG_TABLE_1 
(ID number(3),
PROCEDURE varchar2(15),
STATUS varchar2(4));

insert into PG_TABLE_1 values ('1','PROC_1','OK');
insert into PG_TABLE_1 values ('2','PROC_2','WAIT');
insert into PG_TABLE_1 values ('3','PROC_3','WAIT');
insert into PG_TABLE_1 values ('4','PROC_4','WAIT');

PROC_1,PROC_2,PROC_3,PROC_4是真实程序的名称。

如何用LOOP编写代码,其中:

  • 从TABLE_1获取行,其中STATUS ='WAIT'...所以行2,3,4
  • 选择程序的第一个名称(第一个较小的ID)......所以“PROC_2”
  • 执行PROC_2
  • 将第2行中的状态从“等待”更改为“确定”
  • 然后是PROC_3等。

感谢您的帮助

1 个答案:

答案 0 :(得分:-1)

是的,我同意@Anand你必须使用动态查询

WHILE EXISTS (SELECT 1 FROM PG_TABLE_1 WHERE STATUS = 'WAIT')
BEGIN
 SELECT TOP 1 @PROC =  PROCEDURE FROM PG_TABLE_1 WHERE STATUS = 'WAIT'

 SET @SQL = @SQL + @PROC

 EXEC (@SQL)

 UPDATE PG_TABLE_1 SET STATUS = 'OK' WHERE PROCEDURE = @PROC

END

另请尝试更改过程状态

的列名称