日期:2014-05-17  浏览次数:20755 次

请问如何可以将SQL语句作为参数传到存储过程
目前需要创建一个存储过程
用来更新指定数据表的指定字段值,在开发里急需用到
想法差不多是如下:

CREATE OR REPLACE procedure CURSOR_TRAN(P_TABLE_NAME VARCHAR2,P_KEY VARCHAR2,P_KEY_VALUE VARCHAR2,P_ROW VARCHAR2,P_ROW_VALUE VARCHAR2) is
BEGIN
EXEC('UPDATE '||P_TABLE_NAME||' SET '||P_ROW||' = '''||P_ROW_VALUE''' WHERE P_KEY = '''||P_KEY_VALUE||'''');
END;

或者在程序就构造好SQL语句存在变量 P_SQL然后执行,就不用存储过程了
可是EXEC()在PL/SQL怎么好像用不到,是不是SQL SERVER2000才能用的?PL/SQL有没类似的函数?
谢谢
------最佳解决方案--------------------
 ' set ' 
------其他解决方案--------------------
用execute immediate
------其他解决方案--------------------
例如

create or replace procedure emp_proc(
  p_tableName in varchar2,
  p_key in varchar2,
  p_value in varchar2)
as
  l_sqlstr varchar2(100);
begin
  l_sqlstr := 'update ' 
------其他解决方案--------------------
 p_tableName 
------其他解决方案--------------------
 p_key