如何在Oracle存储过程里实现SQL局部动态查询
<P>我在存储过程里有个SQL语句要用到表变量,就是表名是动态的,但是由于我那SQL语句长度太长,也比较复杂,如果整个SQL语句用动态执行的话以后维护会比较麻烦,我想只实行表名的动态处理,请问各位该怎么做?</P>[align=right][color=#000066][此贴子已经被作者于2007-9-12 17:54:01编辑过][/color][/align]
<P>SQL> begin<BR> 2 insert into &table values('马六');<BR> 3 end;<BR> 4 /<BR>输入 table 的值: test<BR>原值 2: insert into &table values('马六');<BR>新值 2: insert into test values('马六');</P>
<P>PL/SQL 过程已成功完成。</P>
<P>SQL> select * from test;</P>
<P>COLA<BR>----------<BR>张三<BR>李四<BR>王五<BR>马六</P> <P>这位大侠的意思是为表定义一个变量test,可是要怎么定义表变量?总体在存储过程里连起来要怎么写?在存储过程里如果直接用select * from 表标量,编译就通不过了.对了,我是Oracle里的.请指点!非常感谢</P> <P>你是指这样么:</P>
<P>SQL> create or replace procedure test_pro(table_name varchar2) as<BR> 2 text varchar2(100);<BR> 3 begin<BR> 4 text:='insert into '||table_name||' values(''田七'')';<BR> 5 execute immediate text;<BR> 6 end;<BR> 7 /</P>
<P>过程已创建。</P>
<P>SQL> call test_pro('test');</P>
<P>调用完成。</P>
<P>SQL> select * from test;</P>
<P>COLA<BR>----------<BR>张三<BR>李四<BR>王五<BR>马六<BR>田七</P>
页:
[1]
