天翎MyApps技术社区 - 低代码平台 | 流程管理系统 | BPM软件

 找回密码
 注册成为天翎用户
楼主: hbbs2012

关于调用带参数存储过程的问题【bugId:3466】

[复制链接]
bess 发表于 2012-11-5 16:44:56 | 显示全部楼层
您好,麻烦您将"var sql="call cbp_ypyhz(String:"+value1+",String:"+value2+",out:package)";"换成"var sql="call cbp_ypyhz(out:package,String:"+value1+",String:"+value2+")";"试试,有问题,我们再沟通!
 楼主| hbbs2012 发表于 2012-11-6 09:48:16 | 显示全部楼层
报的错误是一样的啊。
bess 发表于 2012-11-6 10:11:08 | 显示全部楼层
您好,我这边跟同事沟通了一下,如果您的存储过程没有一个输出参数,那么就不需要带上out:package 参数了.就是说,您的存储过程本身有几个参数,那么在这里带几个参数即可.给你带来不便,敬请见谅!
 楼主| hbbs2012 发表于 2012-11-6 10:17:24 | 显示全部楼层
改写成这样了:
var value1="CX_QSRQ";
var value2="CX_JZRQ";
var sql="call cbp_ypyhz(String:"+value1+",String:"+value2+")";
sql;
报错一样。
bess 发表于 2012-11-6 10:25:57 | 显示全部楼层
您好,请问您的存储过程在数据库端能否正常执行呢???
 楼主| hbbs2012 发表于 2012-11-7 11:18:16 | 显示全部楼层
1、存储过程:
reate or replace procedure cbp_ypyhz(ny1 varchar2,ny2 varchar2) is
qs number;
jz number;
begin

  --SET NOCOUNT ON;
  delete from tlk_cbt_ypygl_temp1;
  commit;
  delete from tlk_cbt_ypygl_temp2;
  commit;

  qs := ny1;
  jz := ny2;


  insert into tlk_cbt_ypygl_temp1(id,domainid,item_pzdma000,item_pzmcheng,item_jcun0000,item_ljsliang,item_cksliang,item_qmkcun00,item_rksliang)
select id,domainid,item_pzdma000,item_pzhong00,sum(jz),sum(rk),sum(jz+rk) lj,sum(ck),sum(jz+rk-ck)
from (select id,domainid,item_RIQ00000,item_pzdma000,item_pzhong00,'0' jz,to_char(nvl(item_rksliang,0)) rk,'0' lj,to_char(nvl(item_cksliang,0)) ck,'0' jcun from tlk_cbtypyglwhu t
union all
select id,domainid,item_jcrqi000,item_dma00000,item_mcheng00,nvl(item_csjcun00,0),'0','0','0','0' from tlk_cbtypywhu t where item_csjcun00 is not null)
where to_char(item_riq00000,'yyyymmdd')< qs
group by id,domainid,item_pzdma000,item_pzhong00;
  commit;

  insert into tlk_cbt_ypygl_temp2(id,domainid,item_pzdma000,item_pzmcheng,item_jcun0000,item_ljsliang,item_cksliang,item_qmkcun00,item_rksliang)
select id,domainid,item_pzdma000,item_pzhong00,sum(jz),sum(nvl(rk,0)),sum(nvl(jz,0))+sum(nvl(rk,0)),sum(nvl(ck,0)),sum(nvl(jz,0))+sum(nvl(rk,0))-sum(nvl(ck,0)) from
(select id,domainid,item_pzdma000,item_pzhong00,'0' jz,to_char(nvl(item_rksliang,0)) rk,'0' lj,to_char(nvl(item_cksliang,0)) ck,'0' jc
            from tlk_cbtypyglwhu a
           where to_char(item_riq00000, 'yyyymmdd') >= qs
             and to_char(item_riq00000, 'yyyymmdd') <= jz
union all
select id,domainid,item_pzdma000,item_pzmcheng,item_qmkcun00,null,null,null,null from tlk_cbt_ypygl_temp1 )
group by id,domainid,item_pzdma000,item_pzhong00 order by item_pzdma000;
  commit;

2、ID\DOMAINID可以这样直接用么?,为什么写完后编译特别慢。
 楼主| hbbs2012 发表于 2012-11-7 11:21:30 | 显示全部楼层
如果在oracle其他用户下,也就是不用天翎软件自动得出的那些字段,直接写过程,不用id、domainid,就可以实现此过程
bess 发表于 2012-11-7 11:34:22 | 显示全部楼层
您的存储过程是插入数据的?????视图那里是需要查询数据返回结果集然后在视图显示数据的呀.请问您这个存储过程到底是想做什么的呢?
 楼主| hbbs2012 发表于 2012-11-7 11:48:24 | 显示全部楼层
1、存储过程要做的事:
将几个表中的数据取出、分类汇总,最终插入到tlk_cbt_ypygl_temp2中,显示在天翎的视图里,过程的参数是:ny1即qs(起始日期)、ny2即jz(截止日期)。
2、在天翎的查询视图里调用这2个参数。
3、我感觉问题出现过程中ID、DOMAINID的调用上,不知道在过程里怎么调用这2个字段。tlk_cbt_ypygl_temp2中的ID字段在插入的时候是随便取任何一个表中的ID就行么?还是怎样。
bess 发表于 2012-11-7 11:51:28 | 显示全部楼层
您好,我们视图哪里的存储过程模式,是其实主要做的事情就是查询数据库,返回一个查询结果集,然后视图就显示这个结果集的数据..但是您的存储过程的最后一个操作是插入......
我们这边建议您把您插入的操作放在其他地方去实现.这里最好只是查询数据库返回查询结果集最好.

本版积分规则

QQ|手机版|天翎MyApps技术社区 ( 粤ICP备11093750号 )

GMT+8, 2026-8-12 09:23

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表