关于对Oracle加密的问题
1、存储过程不加密可以执行;
2、在AIX中加密执行,发生错误
加密存储过程(利用Netterm进行登录)
set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
WRAP INAME=proc_test ONAME=proc_test.plb
SQL> @proc_test.plb
执行出现错误:
SQL> show errors
Errors for PROCEDURE PROC_TEST:
LINE/COL ERROR
-------- -----------------------------------------------------------------
17/1 PLS-00103: Encountered the symbol "" when expecting one of the
following:
begin function package pragma procedure subtype type use
<an identifier> <a double-quoted delimited-identifier> form
current cursor
The symbol "" was ignored.
3、存储过程如下:
CREATE OR REPLACE PROCEDURE proc_test
(
p_sfktzs in varchar2, -- 罚款通知书
p_sdzry in varchar2, -- 对帐人员
nRc out number, -- 返回代码(0表示成功)
sMsg out varchar2 -- 错误信息描述,成功则无信息
)
is
--定义变量
dzjcid z_wzcf.sdzjc%type;
dz_fkje z_fkdz.nfkje%type;
dz_znj z_fkdz.nznj%type;
dz_jkrq z_fkdz.djkrq%type;
dz_yhdm z_fkdz.syhdm%type;
wzly z_wzsj.swzly%type;
uMsg varchar2(256);
BEGIN
begin
select nfkje,nznj,djkrq,syhdm into dz_fkje,dz_znj,dz_jkrq,dz_yhdm from z_fkdz where sfktzs=p_sfktzs;
exception
when others then
nRc:=100;
sMsg:='出错!'||sqlerrm;
rollback;
return;
end;
begin
update z_fkdz set sdzry=p_sdzry,dczrq=sysdate,sdbfs='2',sdzjg='0' where sfktzs=p_sfktzs;
exception
when others then
nRc:=101;
sMsg:='出错!'||sqlerrm;
rollback;
return;
end;
begin
update z_wzcf set sdzjg='3',szxzt='0',sjkbz='0',djkrq=dz_jkrq where sjdsbh=p_sfktzs and syxbz='0';
exception
when others then
nRc:=102;
sMsg:='出错!'||sqlerrm;
rollback;
return;
end;
begin
update z_wzsj set sjhbz='1' where nwzsj_sn in (select a.nwzsj_sn from z_wzsj a,z_wzcf b where a.nwzsj_sn=b.nwzcf_sn and a.sjhbz<>'5' and a.syxbz='0' and b.sjdsbh=p_sfktzs);
exception
when others then
nRc:=103;
sMsg:='出错!'||sqlerrm;
rollback;
return;
end;
begin
select a.swzly,b.sdzjc into wzly,dzjcid from z_wzsj a,z_wzcf b where a.nwzsj_sn=b.nwzcf_sn and b.sjdsbh=p_sfktzs and b.syxbz='0';
exception
when others then
nRc:=104;
sMsg:='出错!'||sqlerrm;
rollback;
return;
end;
if (wzly='2') and (dzjcid is not null) then
begin
syn_pro_gxzt(dzjcid,dz_fkje,dz_znj,dz_jkrq,dz_yhdm,uMsg);
if uMsg is not null then
nRc:=105;
sMsg:='出错-'||uMsg;
rollback;
return;
end if;
exception
when others then
nRc:=106;
sMsg:='出错!'||sqlerrm;
rollback;
return;
end;
end if;
nRc:=0;
sMsg:='成功!';
commit;
EXCEPTION
WHEN OTHERS THEN
nRc:=999;
sMsg:='数据库操作出错!'||sqlerrm;
rollback;
return;
END;