0

如何使用查询访问同一过程中的过程参数
,例如:请参阅此过程

procedure game(left in tab.left%type,right in tab.right%type,...)  
is  
--some local variables  
begin  
merge into tgt_table
using subquery --(here is what i need to use the parameters)  
on some condition  
when matched then  
update the tgt table  
when not matched then  
insert the table;  
end game; 

在上述过程和合并语句中,我需要一个查询,以便它使用参数值作为表引用,并根据给定的条件使用这些值更新或插入到表中。

请帮帮我。提前致谢

4

2 回答 2

1

如果您的参数定义要使用的表,您将需要使用动态 SQL - 例如:

procedure game(left in tab.left%type,right in tab.right%type,...)  
is  
    --some local variables  
    l_sql long;
begin  
    l_sql := 'merge into tgt_table'
             || ' using ' || left
             || ' on some condition'  
             || ' when matched then'  
             || ' update ' || right
             || ' when not matched then'  
             || ' insert the table';  
    execute immediate l_sql;
end game;

但是,您还有很多工作要做,因为条件、更新和插入子句都需要根据正在使用的表进行更改。我不相信这种采购实际上会特别有用。

于 2009-03-02T11:49:58.910 回答
0

请阅读http://download.oracle.com/docs/cd/B14117_01/appdev.101/b10807/06_ora.htm#sthref777

于 2009-02-28T13:01:34.073 回答