如何将传入的参数和存储过程中的变量拼接
存储过程如下:
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已到期')”这样的效果。
解决方案 »
- 关于SQL数据的问题
- 这样的要求怎么去实现呢?
- oracle系统管理员密码找回
- 如何选择使用数据库(sql server 和 Oralce ),它们之间的差别是什么,请各位数据库大虾参与讨论,公司要我出个方案,急啊!
- 关于数据存储过程 帮帮我
- 在删除表前,oracle如何判断表是否存在,存在就删再创建,不存在直接创建!
- 求oracle8i中文版有效下载地址,百分只送一人
- 请问oracle有没有过程用于备份数据的呢?
- 这个权限有哪些作用(哪些功能啊)grant resource to test;可以得到哪些权限呢,如insert 之类吗?
- 使用复制同步两个数据库会有多大的性能影响呢?
- 高手救急!oracle9 600错误 内部错误代码,参数16201
- 新手,关于oracle问题,对本人有用就给分。速度结帖~~
这条语句有问题呀,应该是
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:-[已到期')