首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

关于oracle存储过程中使用变量作为表名解决方法

2013-03-26 
关于oracle存储过程中使用变量作为表名我现在想在存储过程中对一系列表进行操作,除了表名不同,操作都是相

关于oracle存储过程中使用变量作为表名
我现在想在存储过程中对一系列表进行操作,除了表名不同,操作都是相同的。怎样可以使用变量作为表名啊?
create or replace procedure case_to_province as
  cursor cur is
  select * from tableName
  ……
我就是想把这个tableName用变量来表示,这样我在调用存储过程的时候,只要换一下参数就可以了,而不用根据不同的表名,来写多个存储过程。

[解决办法]
--动态游标

c sys_refcursor;
str varchar2(4000);
begin
str := 'select * from '||tbname;
open c for str;

--下面用显式调用,和游标一样。
end;
[解决办法]

SQL code
CREATE OR REPLACE PROCEDURE p01(tabname IN VARCHAR2) AS v_num NUMBER(10);v_sql VARCHAR2(300);BEGIN   v_sql:='select count(*) from '||tabname;  EXECUTE IMMEDIATE v_sql INTO v_num;  Dbms_Output.put_line('the total num is '||v_num);END p01;EXEC p01('user_sequences');输出结果为:the total num is 8 

热点排行