如何将传入的参数和存储过程中的变量拼接
存储过程如下:
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已到期')”这样的效果。
存储过程如下:
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已到期')”这样的效果。
这条语句有问题呀,应该是
insert into Dqjdcbf values('1001','你好,您的机动车号牌为:'||r_hphm||'已到期')
拼一下 然后用output打出了看看拼成什么样子了
一步步来嘛
insert into Dqjdcbf values('1001','你好,您的机动车号牌为:'||r_hphm||'已到期')
我要的效果是
insert into Dqjdcbf values('1001','你好,您的机动车号牌为:12345已到期')
str1:='你好,您的机动车号牌为:'
str2:='||r_hphm||'
str3:-[已到期')