oracle存储过程调用另一个存储过程

createorreplacefunctiondltrans.fcUpdateWorkLayerFields(sBizIDinVarchar2)returninteger... create or replace function dltrans.fcUpdateWorkLayerFields( sBizID in Varchar2) return integer is

参 数: sBizID 业务标识
Begin
Begin

-- 查询工作图记录是否存在
If sBizID = '1' Then
sPhyLayerFullName := 'DLGIS.GZT_STGDTC';
ElsIf sBizID = '2' Then
sPhyLayerFullName := 'DLGIS.GZT_JSYDBP';
--sPhyLayerFullName := 'DLGIS.shyt测试图层';
Elsif sBizId='3' then
dltrans.gtzybtdzztc;--在这调用
end if;

end fcUpdateWorkLayerFields;
这是一个存储过程,调用下面的存储过程
create or replace function dltrans.GTZYBTDZZTC( sGuidValue in Varchar2,
sGuidFiledName in Varchar2, sDKBH in Varchar2)
return integer is
--自定义
sSQL3 VARCHAR2(200);
sxmbh varchar2(200);
sxmmc varchar2(1000);
syswh varchar2(200);
sysdw varchar2(200);
sysrq varchar2(30);
sxmszdsheng varchar2(200);
sxmszdshi varchar2(200);
sxmszdxian varchar2(200);
iCount Integer;
iResult INTEGER;
tmprc pkdual.anycursor;
sPhyLayerFullName Varchar2(255);
begin
begin
iResult := -1;
sPhyLayerFullName := 'dlgis.GZT_GTZYBTDZZTC';

-- 查询是否存在记录
iCount := 0;
If sPhyLayerFullName is not null Then
sSQL3 := 'Select count(*) From ' || sPhyLayerFullName ||' Where xmbh = ' || sGuidValue ||' ';
Execute Immediate sSQL3
Into iCount;
End If;

If iCount < 1 Then
Return(iResult);
End If;

-- 查询表单是否存在记录(dltrans.TO_T_HBGY_KZ c,a.gd_guid=c.gd_guid And)
sSQL3 := 'Select count(*) From dltrans.to_t_tdzz a,dltrans.to_T_tdzz_DK d Where a.xmbh=d.xmbh and a.xmbh= ''' || sGuidValue || ''' ';

Execute Immediate sSQL3
Into iCount;
If iCount < 1 Then
Return(iResult);
end if;

-- 获取表单数据
open tmprc for
Select
nvl(a.xmmc,''),
nvl(a.xmszdsheng,''),
nvl(a.xmszdshi,''),
nvl(a.xmszdxian,''),
nvl(a.ysdw,''),
nvl(a.yswh,''),
nvl(a.ysrq,'')
From dltrans.to_t_tdzz a,
dltrans.to_T_TDZZ_DK d
Where a.xmbh = d.xmbh
and a.xmbh = sGuidValue;
loop
fetch tmprc
Into sxmmc ,
syswh ,
sysdw ,
sysrq ,
sxmszdsheng,
sxmszdshi ,
sxmszdxian ;
exit when tmprc%notfound;

-- 自定义字段对照更新

Update DLGIS.GZT_GTZYBTDZZTC
Set xmmc = sxmmc,
yswh = syswh,
ysdw = sysdw,
ysrq = sysrq,
xmszs = sxmszdsheng,
xmszs_1 = sxmszdshi ,
xmszx = sxmszdxian
Where xmbh = sGuidValue;

Execute Immediate sSQL3 ;
end loop;
close tmprc;
Commit;
return 1;
EXCEPTION
WHEN OTHERS THEN
Rollback;
iResult := -1;
end;
return(iResult);
end;
帮我看以下 这个存储过程是有问题的,总是报错,帮我改一下,谢谢哥哥姐姐们,具体该怎么写,帮我改下,就是
展开
 我来答
太平岁年丰9
2013-09-22 · TA获得超过1231个赞
知道小有建树答主
回答量:1017
采纳率:100%
帮助的人:1090万
展开全部

调用方法不正确

  1. 调用时没有实参,你应该按照函数定义时参数的个数和类型给函数传递同样个数和类型的参数,这是最基本的啊

  2. 你定义的是个函数,是函数就要返回值,你得用一个函数返回值同样类型的变量去接收这个返回值


翔阿狗
2013-09-22 · TA获得超过208个赞
知道小有建树答主
回答量:452
采纳率:0%
帮助的人:200万
展开全部
只要存储过程的参数对了就行
追问
但是第一个存储过程调用的时候是可以正常编译,但是会出现异常,意思是调用下面的存储过程的时候参数个数和类型不对;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式