CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  PowerBuilder >  数据库相关

大侠帮看看这个存储过程的调用

楼主chenhaijiang(迷惘)2003-11-02 04:04:05 在 PowerBuilder / 数据库相关 提问

存储过程如下:  
  CREATE   PROCEDURE   sp_yszkzl    
                                                                                                  @zl1   int,  
                                                                                                  @zl2   int,  
                                                                                                  @zl3   int,  
                                                                                                @zl4   int,  
                                                                                                  --@zl5   int   ,    
                                                                                                  @b_date   datetime,  
                                                                                                    @e_date     datetime,  
                                                                                                  @stat       varchar(400)--统计条件          
                                                                                                   
  AS  
  create   table   #hwzl(fhid     varchar(10)primary   key,rq   smalldatetime,pq   varchar(10),rybm   varchar(8),ryxm   varchar(8),khid   varchar(10),khmc   varchar(40),je   numeric(9,2),  
                                                                              zk1   numeric(9,2),zk2   numeric(9,2),zk3   numeric(9,2),zk4   numeric(9,2),zk5   numeric(9,2)   )  
   
  begin  
  Declare   @S_SQL   As   VarChar(8000)  
  Declare   @S_NSQL   As   NvarChar(4000)  
   
  set   @S_SQL='insert   into   #hwzl(fhid,rq,pq,rybm,ryxm,khid,khmc,je)  
                                                          select   fhid,rq,pq,rybm,ryxm,khid,khmc,sum(hkjcje)   from   hwdz   where   hkjcje>0    
                                                          group   by   fhid,pq,rq,rybm,ryxm,khid,khmc'  
  Set   @stat   =   ISNULL(@stat,'')  
  If   Len(LTrim(RTrim(@stat)))   >   0  
  Begin  
  Set   @S_SQL   =   LTrim(RTrim(@S_SQL))   +   '   having   '   +   LTrim(RTrim(@stat))  
   
  Set   @S_NSQL   =   Cast(@S_SQL   As   NVarChar(4000))  
  Exec   sp_executesql   @S_NSQL  
  end  
  else  
  begin  
  Set   @S_SQL   =   LTrim(RTrim(@S_SQL))  
  Set   @S_NSQL   =   Cast(@S_SQL   As   NVarChar(4000))  
  Exec   sp_executesql   @S_NSQL  
  end  
  end  
   
  update   #hwzl  
   
  set   zk1=(select   #hwzl.   je   from   #hwzl,hwdz   where   @e_date   -   #hwzl.rq<=@zl1   and   #hwzl.fhid=hwdz.fhid),  
                zk2=   (   select   #hwzl.   je   from   #hwzl,hwdz   where   @e_date     -   #hwzl.rq<=@zl2   and   @e_date   -#hwzl.rq>@zl1   and   #hwzl.fhid=hwdz.fhid),  
                  zk3=   (select   #hwzl.   je   from   #hwzl,hwdz   where   @e_date     -   #hwzl.rq<=@zl3   and   @e_date   -#hwzl.rq>@zl2   and   #hwzl.fhid=hwdz.fhid),  
                  zk4=   (   select     #hwzl.   je   from   #hwzl,hwdz   where     @e_date     -   #hwzl.rq<=@zl4   and     @e_date     -   #hwzl.rq>@zl3   and   #hwzl.fhid=hwdz.fhid),  
                  zk5=   (select   #hwzl.   je   from   #hwzl,hwdz   where   @e_date   -   #hwzl.rq>@zl4   and   #hwzl.fhid=hwdz.fhid)  
  select   *from   #hwzl  
  --drop   table     #hwzl  
  GO  
  上面的存储过程在查询分析器中执行没问题。但在pb中如下调用后出错:  
  DECLARE   yszkzl   PROCEDURE   FOR   sp_yszkzl  
   
        @l_zk1   =   30,  
  @l_zk2   =   60,  
  @l_zk3   =   90,  
  @l_zk4   =   120,  
  @b_date   =   :d1   ,  
  @e_date   =   :d2,  
  @s_state   =   :tjparm1  
  using   sqlca;  
  sqlca.autocommit=true  
   
  execute   yszkzl   ;  
  sqlca.autocommit=false    
    close   yszkzl;  
     
  dw_1.retrieve(yqzk1,yqzk2,yqzk3,yqzk4,d1,d2,tjparm1)//d1,d2,tjparm1是没问题的参数。  
   
  出错提示如下:  
  datawindow   error:  
        select   error:无法将null值插入列‘zk5’,表'tempdb.dbo.#hwzl___';该列不允许空值,insert失败。  
   
  问题点数:50、回复次数:3Top

1 楼ropriest(馆主)回复于 2003-11-02 10:17:47 得分 0

单独执行select   #hwzl.   je   from   #hwzl,hwdz   where   @e_date   -   #hwzl.rq>@zl4   and   #hwzl.fhid=hwdz.fhid,可能是你的查询数据zk5有空值的情况。  
  可以在zk5=   (select   #hwzl.   je   from   ……的后面再加上一句:  
  select   zk5   =   IsNull(zk5,0)看看  
   
  Top

2 楼ropriest(馆主)回复于 2003-11-02 10:20:08 得分 50

如果有空值,把语句zk5=   (select   #hwzl.   je   from   ……)改成:  
  zk5   =   IsNull((select   #hwzl.   je   from   ……),0)Top

3 楼chenhaijiang(迷惘)回复于 2003-11-02 11:50:51 得分 0

问题解决。是pb的问题。Top

相关问题

  • 请大家给我帮我看看这个调用存储过程的问题
  • 存储过程调用存储过程
  • 帮帮我吧?这个已经困扰我一个上午了(关于ASP调用存储过程的问题)
  • 早回帖子早得分--帮忙看看这个存储过程的调用错在哪里?
  • 老大们,帮小弟看看,为何我无法调用这个存储过程阿
  • 帮忙看看这个存储过程
  • 帮我看看这个存储过程
  • 帮看看这个存储过程。。。
  • 请问怎样在SQL SERVER中调用这个存储过程
  • 急!!为什么这个存储过程不能调用?

关键词

  • 存储过程
  • date
  • hwzl
  • fhid
  • zk
  • hwdz
  • zl
  • yszkzl
  • rq
  • khid

得分解答快速导航

  • 帖主:chenhaijiang
  • ropriest

相关链接

  • PowerBuilder类图书
  • PowerBuilder类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo