Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Can't create a function in SQL windows of PL/SQL Developer.

517939Mar 9 2007 — edited Mar 10 2007
The function is :

create or replace function Xgyh
(pvc2Czy in varchar2,
pnumYhid in number,
pvc2Lfid in varchar2,
pvc2Grzid in varchar2,
pvc2Zbmid in varchar2,
pvc2Bmid in varchar2)
return number is
intZxbz integer:=1;--返回值(1:正确,0:错误);
numDxlb number;
numGx number;
begin
--判断指定用户是否合法
if pvc2Czy is null then
intZxbz:=0;
end if;
if pnumYhid is not null then
if pvc2Lfid+pvc2Grzid+pvc2Zbmid+pvc2Bmid is null then
intZxbz:=0;
end if;
elsif pvc2Lfid is not null then
if pvc2Grzid+pvc2Zbmid+pvc2Bmid is null then
intZxbz:=0;
end if;
elsif pvc2Grzid is not null then
if pvc2Zbmid+pvc2Bmid is null then
intZxbz:=0;
end if;
elsif pvc2Zbmid is not null then
if pvc2Bmid is null then
intZxbz:=0;
end if;
elsif pvc2Bmid is null then
intZxbz:=0;
end if;
--取当前登陆操作员在数据权限表中权限并判断是否允许更新当前用户
if intZxbz=1 then
select t.更新,
decode(t.对象类别,'用户',0,'楼房',1,'供热站',2,'子部门',3,'部门',4,'集团',5)
into numGx,numDxlb
from 系统_数据权限_表 t
where t.用户=pvc2Czy
and (t.对象类别,t.对象识别码) in
(('集团',0),('部门',pvc2Bmid),('子部门',pvc2Zbmid),('供热站',pvc2Grzid),('楼房',pvc2Lfid),('用户',pnumYhid))
and rownum=1
order by 2,1;
end if;
--返回信息
return(numGx);
end Xgyh;

If get rid of the where condition
'and (t.对象类别,t.对象识别码) in
(('集团',0),('部门',pvc2Bmid),('子部门',pvc2Zbmid),('供热站',pvc2Grzid),('楼房',pvc2Lfid),('用户',pnumYhid))',
this function can be created fast.
Thanks for you help!
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Apr 7 2007
Added on Mar 9 2007
2 comments
466 views