DECLARE
m_table character(50):= a.b06;
my_query varchar2(10000);
p_condition number := '1234567';
begin
my_query:= 'select * from '||m_table where ||' msisdn = p_condition';
Execute immediate my_query;
end;说问题在,where 请各位看看怎么修改的啊,谢谢。。
m_table character(50):= a.b06;
my_query varchar2(10000);
p_condition number := '1234567';
begin
my_query:= 'select * from '||m_table where ||' msisdn = p_condition';
Execute immediate my_query;
end;说问题在,where 请各位看看怎么修改的啊,谢谢。。
这个需要游标的。
从一个帖子里copy的sample:create or replace procedure AA_SXJTEST is
out_gg number(8);
cursor v_cur is select id from t_gzgl_zxjr_list;
begin
open v_cur;
fetch v_cur into out_gg;
while v_cur %found loop
DBMS_OUTPUT.put_line('out_gg变量的值=:'||out_gg);
fetch v_cur into out_gg;
end loop;
close v_cur;
end AA_SXJTEST;
my_query:= 'select * from '||m_table||' where msisdn = '''||p_condition||'''';
4楼的写法正确
1. sql拼的有问题
SQL codemy_query:= 'select * from '||m_table||' where msisdn = '||p_condition; 2. 可以使用动态的参数
codemy_query:= 'select * from '||m_table||' where msisdn = :1'; (表名和字段名不行)
execute immediate codemy_query using p_condition;3. 保证sql返回单条记录,多条应该使用1楼说的这样的方式
m_table character(50):= 'a.b06';
my_query varchar2(10000);
p_condition number := '1234567';
begin
my_query:= 'select * from '||m_table ||' where msisdn = '''||p_condition||'''';
Execute immediate my_query;
end;
type cur is ref cursor;
v_cur cur;
--这里定义一系列变量 "变量1,变量2,....." 对应表a.b06中的各个列,可能有别的简单方法。
m_table character(50):= 'a.b06';
my_query varchar2(10000);
p_condition number := '1234567';
begin
open v_cur for 'select * from '||m_table ||' where msisdn = '''||p_condition||'''';
fetch v_cur into 变量1,变量2,......; --定义的那一系列变量
while v_cur %found loop
DBMS_OUTPUT.put_line(变量1||chr(9)||变量2,.....);
fetch v_cur into 变量1,变量2,......; --定义的那一系列变量
end loop;
close v_cur;
end;
/
set serveroutput on
/
然后就有结果了