姓名去空格:编写对eaa1表姓名aac003去空格过程 sp_xmqkg0(空格包括左边,右边以及姓名中间),并把更新人员信息保存到备份表tb_xmqkg0_bak中(字段为:个人档案号,原来姓名,现在姓名) 要求:备份表更新由过程中更新。
我刚接触ORACLE,就试着写了一个,帮我看看有什么问题没?还有pl/sql中存储过程怎么调用,说具体点,谢谢
create or replace procedure sp_xmqkg0
is
sql1 varchar2(2000);
sql2 varchar2(2000);
sql3 varchar2(2000);
cursor c_tb_xmqkg0_bak
is
select ced001 档案编号,aac003 原来姓名,现在姓名 from(select replace(aac003,' ','') 现在姓名 from eaa1),eaa1
begin
sql1 :='drop table tb_xmqkg0_bak';
execute immediate sql1;
sql2 :='create table tb_xmqkg0_bak(个人档案号 varchar2(14) not null,原来姓名 varchar2(20),现在姓名 varchar2(20)';
execute immediate sql2;
for r in c_tb_xmqkg0_bak
loop
insert into tb_xmqkg0_bak VALUES(r.档案编号,r.原来姓名,r.现在姓名);
end loop;
commit;
sql3:='update eaa1 set aac003=replace(aac003,' ','')';
exception
when others then
rollback;
end sp_xmqkg0;
我刚接触ORACLE,就试着写了一个,帮我看看有什么问题没?还有pl/sql中存储过程怎么调用,说具体点,谢谢
create or replace procedure sp_xmqkg0
is
sql1 varchar2(2000);
sql2 varchar2(2000);
sql3 varchar2(2000);
cursor c_tb_xmqkg0_bak
is
select ced001 档案编号,aac003 原来姓名,现在姓名 from(select replace(aac003,' ','') 现在姓名 from eaa1),eaa1
begin
sql1 :='drop table tb_xmqkg0_bak';
execute immediate sql1;
sql2 :='create table tb_xmqkg0_bak(个人档案号 varchar2(14) not null,原来姓名 varchar2(20),现在姓名 varchar2(20)';
execute immediate sql2;
for r in c_tb_xmqkg0_bak
loop
insert into tb_xmqkg0_bak VALUES(r.档案编号,r.原来姓名,r.现在姓名);
end loop;
commit;
sql3:='update eaa1 set aac003=replace(aac003,' ','')';
exception
when others then
rollback;
end sp_xmqkg0;
代码格式不好看,最好还是写成SQL代码。像这样的。
过程不看了,不过建议不要把字段名写成中文,会出问题的。
调用存储过程如下:
begin
sp_xmqkg0;
end;
DECLARE
BEGIN
sp_xmqkg();
END你的程序自己调下,出了问题可以贴出来,加油
create or replace procedure sp_xmqkg0
is
sql1 varchar2(2000);
sql2 varchar2(2000);
sql3 varchar2(2000);
cursor c_tb_xmqkg0_bak
is
select ced001 档案编号,aac003 原来姓名,现在姓名 from(select replace(aac003,' ','') 现在姓名 from t1),t1begin
sql1 :='drop table tb_xmqkg0_bak';
execute immediate sql1;
sql2 :='create table tb_xmqkg0_bak(个人档案号 varchar2(14) not null,原来姓名 varchar2(20),现在姓名 varchar2(20))';
execute immediate sql2;for r in c_tb_xmqkg0_bak
loop
insert into tb_xmqkg0_bak VALUES(r.档案编号,r.原来姓名,r.现在姓名);
end loop;
sql3:='update eaa1 set aac003=replace(aac003,' ','')';
commit;exception
when others then
rollback;
end sp_xmqkg0;