CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  PowerBuilder >  基础类

Select语句中使用变量出错

楼主fjzjr(阿如)2002-09-19 13:12:40 在 PowerBuilder / 基础类 提问

Select   数量*成本    
      into   :money  
      from   出库明细表  
      where   单号   in   ("A02010001","B02010003");  
  得到money值为500  
  问题是:("A02010001","B02010003")中单号(可能的几十个)是由用户选择的,即要变成:  
  string   danhao  
  danhao=.....//在程序中处理得到  
  Select   数量*成本    
      into   :money  
      from   出库明细表  
      where   单号   in   (:danhao);  
  这样一来money为0  
  怎么解决这问题?  
   
  问题点数:100、回复次数:17Top

1 楼liuhonglan(小小)回复于 2002-09-19 13:17:34 得分 5

查看一下sqlcode=100还是-1,100执行成功但未找到相应数据,-1执行出错Top

2 楼luoyefeng(拒绝日货)回复于 2002-09-19 13:21:48 得分 5

单引号和双引号是有影响的Top

3 楼llitcwl(中国龙)回复于 2002-09-19 13:24:17 得分 10

select   ...into....只能处理返回记录只有一条的情况  
  改成游标或DSTop

4 楼chengjian(程剑)回复于 2002-09-19 13:27:10 得分 15

这样是不行的!  
  只能是拼SQL  
  STRING   LS_SQL,LS_DH  
  LS_DH   =   '11331,121212'  
  LS_SQL   =   'Select   数量*成本    
      into   :money  
      from   出库明细表  
      where   单号   in   ('''   +   LS_DH   +''')'  
  EXECUTE   LS_SQL   USING   SQLCA;  
  Top

5 楼fjzjr(阿如)回复于 2002-09-19 13:27:49 得分 0

返回值为0,  
  其实danhao变量值为"A02010001","B02010003"  
  Top

6 楼zhangshunshi(宇轩)回复于 2002-09-19 13:30:31 得分 5

 
  Select   数量*成本    
      into   :money  
      from   出库明细表  
      where   单号   =   :danhao;Top

7 楼fjzjr(阿如)回复于 2002-09-19 13:30:31 得分 0

哦我写错了select   语句是这样:  
  Select   sum(数量*成本)  
      into   :money  
      from   出库明细表  
      where   单号   in   ("A02010001","B02010003");  
  得到money值为500  
  问题是:("A02010001","B02010003")中单号(可能的几十个)是由用户选择的,即要变成:  
  string   danhao  
  danhao=.....//在程序中处理得到  
  Select   sum(数量*成本)  
      into   :money  
      from   出库明细表  
      where   单号   in   (:danhao);  
  这样一来money为0  
  怎么解决这问题?  
   
  Top

8 楼smilelhh(blue)回复于 2002-09-19 13:31:00 得分 5

这是因为:  
  Select   数量*成本    
      from   出库明细表  
      where   单号   in   ("A02010001","B02010003");  
  这条SELECE语句的返回行多于一行.  
   
  只能用  
  Select   sum(数量*成本)    
      into   :money  
      from   出库明细表  
      where   单号   in   ("A02010001","B02010003");  
  或者用游标一行行取出来.  
   
  Top

9 楼warchild(大成若缺)回复于 2002-09-19 13:36:08 得分 5

cursorTop

10 楼liuhonglan(小小)回复于 2002-09-19 13:37:05 得分 5

我觉得,单号中格式错误Top

11 楼joss(季节...夏至)回复于 2002-09-19 13:40:08 得分 5

怎么有这样要求的客户,  
  如果是查询出一批记录(与客户输入的一批单号相匹配!)  
  你可以用循环语句来实现啊!  
   
  或者你写成存储过程得了!Top

12 楼ddtid(竹雨)回复于 2002-09-19 13:46:52 得分 10

你那个danhao怎么存储多个单号的?  
  不会是"A02010001,B02010003"吧  
  这样到了SQL语句里面就成了  
  Select   sum(数量*成本)  
      into   :money  
      from   出库明细表  
      where   单号   in   ('A02010001,B02010003');  
  去取出来当然是0  
   
  最简单的处理办法是使用循环  
  或者先用字符串把danhao   处理成'A02010001','B02010003'的样子(我没有试过,不知道有没有用)  
   
  Top

13 楼devil_heart(心魔)回复于 2002-09-19 13:49:00 得分 10

试试这样:  
  string   danhao  
  string   ls_sql  
  danhao=.....//在程序中处理得到  
  ls_sql="Select   sum(数量*成本)   from   出库明细表   where   单号   in   ("+danhao+")"  
   
  PREPARE   sqlsa   FROM   :ls_sql;  
  DECLARE   dyn_cursor   DYNAMIC   CURSOR   FOR   sqlsa;  
  OPEN   DYNAMIC   dyn_cursor;      
  do   While   sqlca.sqlcode   =   0  
  Fetch   dyn_cursor   into   :money;  
  Loop  
  Close   dyn_cursor;Top

14 楼flyhot(阳光清晨)回复于 2002-09-19 13:59:37 得分 2

关注!Top

15 楼pufan()回复于 2002-09-19 14:05:53 得分 6

用游标还不如用datastore.  
  新建datawindow检索参数数组   string   array  
  新建compose   fileld   值为   sum(数量*成本   for   all)  
  程序中检索取compose   fileld   值即可.Top

16 楼konrong(康尼)回复于 2002-09-19 14:08:57 得分 6

ddtid(竹雨)说的有道理,你要把字符处理成'A02010001','B02010003'的样子才能查到值,象你这样是肯定查不到结果的。Top

17 楼inalover(奇遇)回复于 2002-09-19 14:14:18 得分 6

应该这样用,测试成功  
  分开写  
   
  string   danhao1,danhao2  
  danhao1="A02010001"  
  danhao1="B02010003"  
   
  Select   sum(数量*成本)  
      into   :money  
      from   出库明细表  
      where   单号   in   (:danhao1,:danhao2);  
  Top

相关问题

  • select 语句出错求助!
  • select 语句中变量赋值问题
  • 请问如何将select语句赋值给一个变量
  • 如何在SELECT/INSERT...语句中加入变量?
  • 怎样在bcb的select语句中使用变量?
  • 怎样在select语句中使用变量?
  • 关于Select语句中带变量查询的问题
  • 怎样在SQL语句的SELECT字句中使用变量?
  • select语句中含有变量的问题
  • 在select 语句中,表名是个变量行不行???

关键词

  • 语句
  • sql
  • danhao
  • a02010001
  • b02010003
  • 成本
  • money
  • 数量
  • 单号
  • 游标

得分解答快速导航

  • 帖主:fjzjr
  • liuhonglan
  • luoyefeng
  • llitcwl
  • chengjian
  • zhangshunshi
  • smilelhh
  • warchild
  • liuhonglan
  • joss
  • ddtid
  • devil_heart
  • flyhot
  • pufan
  • konrong
  • inalover

相关链接

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

广告也精彩

反馈

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