如何将传入的参数和存储过程中的变量拼接
存储过程如下:
create or replace
procedure     testsms(smsc in varchar2)
as
r_deptid VARCHAR2(20);
r_hphm varchar2(15);
v_str2 varchar2(1000);
sms varchar2(600);
cursor c_dept is select dept,hphm from jdcinfo; 
begin
execute immediate 'delete from Dqjdcbf';
  open c_dept;  
   loop  
     fetch c_dept into r_deptid,r_hphm;
     exit when c_dept%notfound;
     sms:='你好,您的机动车号牌为:'||r_hphm||'已到期';
     v_str2:='insert into Dqjdcbf values('''||r_deptid||''','''||sms||''')';  
     execute immediate v_str2;
   end loop;  
  close c_dept;
end testsms;
这样执行没有问题,生成的sql语句为:
insert into Dqjdcbf values('1001','你好,您的机动车号牌为:12345已到期')如果改成,传入参数为:你好,您的机动车号牌为:'||r_hphm||'已到期
create or replace
procedure     testsms(smsc in varchar2)
as
r_deptid VARCHAR2(20);
r_hphm varchar2(15);
v_str2 varchar2(1000);
sms varchar2(600);
cursor c_dept is select dept,hphm from jdcinfo; 
begin
execute immediate 'delete from Dqjdcbf';
  open c_dept;  
   loop  
     fetch c_dept into r_deptid,r_hphm;
     exit when c_dept%notfound;
     v_str2:='insert into Dqjdcbf values('''||r_deptid||''','''||smsc||''')';  
     execute immediate v_str2;
   end loop;  
  close c_dept;
end testsms;
最后生成的insert语句为:
insert into Dqjdcbf values('1001',你好,您的机动车号牌为:'||r_hphm||'已到期')
不能把变量里的值取出来,请问怎么写能生成“insert into Dqjdcbf values('1001','你好,您的机动车号牌为:12345已到期')”这样的效果。

解决方案 »

  1.   

    insert into Dqjdcbf values('1001',你好,您的机动车号牌为:'||r_hphm||'已到期')
    这条语句有问题呀,应该是
    insert into Dqjdcbf values('1001','你好,您的机动车号牌为:'||r_hphm||'已到期')
      

  2.   

    insert into Dqjdcbf values('1001','你好,您的机动车号牌为:'||r_hphm||'已到期')--少了一个分号
      

  3.   

    不好意思那个单引号是我发贴的时候少打了,变量r_hphm的值就是拼不出来
      

  4.   

    拼布出来???
    拼一下  然后用output打出了看看拼成什么样子了
    一步步来嘛
      

  5.   

    拼出来就是这个样子
    insert into Dqjdcbf values('1001','你好,您的机动车号牌为:'||r_hphm||'已到期')
    我要的效果是
    insert into Dqjdcbf values('1001','你好,您的机动车号牌为:12345已到期')
      

  6.   

    首先你要先确定r_hphm是否有值,单独输出一下变量看看是什么值。
      

  7.   

    把这句分三个变量写,
    str1:='你好,您的机动车号牌为:'
    str2:='||r_hphm||'
    str3:-[已到期')
      

  8.   

    你这个参数是当作字符串传进来的,永远不可能当成变量解析,用绑定变量,或者判断用户传进来的变量是不是 r_hphm ,单独写分析