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

大家说说数据窗口Retrieve函数的实现机制!

楼主Kanfu(无知者无畏)2001-07-27 15:44:49 在 PowerBuilder / 基础类 提问

我这几天一直想重载Retireve函数,发现在调用Retrieve函数时,参数可以上千个,好象只受脚本长度限制的限制。如果用重载实现的话简直不可思议!说说你的想法。 问题点数:100、回复次数:25Top

1 楼pbsql(风云)回复于 2001-07-27 15:48:59 得分 0

应该就是经过优化的SELECT语句吧Top

2 楼assdeng(山野村夫)回复于 2001-07-27 15:52:07 得分 0

学习,蹭分^_^Top

3 楼pb65(菜菜)回复于 2001-07-27 15:56:20 得分 10

我觉得肯定不是重载,估计是静态编译Top

4 楼nasy(!!!###东方不败###!!!)回复于 2001-07-27 15:57:12 得分 0

up   .up.up  
  Top

5 楼caolei1974(梦飞扬)回复于 2001-07-27 16:24:12 得分 0

是将缓冲区的内容显示到数据窗口里Top

6 楼Kanfu(无知者无畏)回复于 2001-07-27 17:05:26 得分 0

我的意思是:在调用数据窗口的Retrieve函数的时候,参数最多可以几千个,好象只受脚本长度限制的限制,你说他是怎么实现的?因为我想重载这个函数,这样的话,调用一次Retrieve函数,可以从多个库里取数据,呵呵Top

7 楼nasy(!!!###东方不败###!!!)回复于 2001-07-27 17:12:35 得分 0

函数重载用处很大,如重载UPDATE函数,  
  可以保持两个数据库的同一个表数据一致。Top

8 楼glhorse(happy day)回复于 2001-07-27 17:13:02 得分 0

sqlTop

9 楼nasy(!!!###东方不败###!!!)回复于 2001-07-27 17:14:18 得分 0

用触发器就不行了,只能单向更新。Top

10 楼hzslx(人在江湖)回复于 2001-07-27 17:37:11 得分 0

bi   jiao   diao   de   yi   ge   han   shu    
  hehe    
  I   like   very   muchTop

11 楼Kanfu(无知者无畏)回复于 2001-07-27 17:40:54 得分 0

可能大家还不懂我的意思  
  比如要是Retrieve函数最大有2000个参数,就要有2000个retrieve函数,而且如果考虑参数类型的话,简直很不可思议,所以我就揣摩它是怎么实现的。Top

12 楼pbdesigner(MIS/ERP开发)回复于 2001-07-27 17:41:36 得分 80

我想PB系统函数可能把参数串先当成一个字符串。在编译时通过分解这个字符串(以逗号分隔)可得到参数个数,然后每个参数与变量声明相比较,如果发现声明了,就去取这个变量的值,如果没有声明,就当成值看待。将这个值的类型与PB系统存储该函数的类型(PB内部应该存有各函数的参数信息)进行比较,发现类型不对,提示错误信息。Top

13 楼pbdesigner(MIS/ERP开发)回复于 2001-07-27 17:41:55 得分 0

因为其系统中规定了参数的个数,所以,如果传过来的参数个数于需要的个数不一样,也会提示出错。象那种可以重载的函数,则系统有好几条记录。但象retrieve()等那种随意参数个数的函数,它的参数个数值可能是一个特殊值(比如以’U‘表示。)。以上是我的个人看法,我不懂编译原理啦!Top

14 楼shawnguo(shawn)回复于 2001-07-27 19:23:31 得分 0

gzTop

15 楼SOFTFUN_CSDN(不知所云~)回复于 2001-07-27 20:00:53 得分 0

1、不可能用重载~~  
  2、比较全面的优化~~  
  3、Retrieve函数没有必要重载(除非是一些限制性措施-个人认为不提倡)~~Top

16 楼pbdesigner(MIS/ERP开发)回复于 2001-07-28 09:38:05 得分 0

我的意思也是retrieve()等参数随意的函数不是用重载来实现,当系统读到参数个数值为'U'(假设)的时候,它不去检测参数的个数。但是它执行时会与DWO定义时参数个数比较。Top

17 楼wangsw(呀呀)回复于 2001-07-28 10:00:28 得分 10

怎么实现的,在后台SQL上看看其运行规划不就可以了!!  
  Top

18 楼mv(我..)回复于 2001-07-28 10:32:49 得分 0

wa   好多人啊Top

19 楼Kanfu(无知者无畏)回复于 2001-07-28 11:06:02 得分 0

to   wangsw(呀呀)   
  怎么看呀?Top

20 楼wangsw(呀呀)回复于 2001-07-28 22:39:12 得分 0

写个同样的SQL语句,好象是:SET   EXEC   OFF   ;SET   PLAN   ON  
  SQL;  
  然后运行就可以看到它的规划运行图!  
   
  Top

21 楼pbdesigner(MIS/ERP开发)回复于 2001-07-31 10:07:08 得分 0

upTop

22 楼Kanfu(无知者无畏)回复于 2001-07-31 10:20:16 得分 0

谢谢pbdesigner(MIS/ERP开发)抬举,呵呵Top

23 楼Kanfu(无知者无畏)回复于 2001-07-31 10:24:36 得分 0

sybase   forums上有人这样说:  
  The   actual   implementation   of   "Retrieve(...)"   datawindow   function   is   an  
  exception.   PowerBuilder   solves   it   at   runtime,   probably   creating   a   internal  
  array   with   passed   data.  
   
  Is   not   possible   to   create   a   user-defined   function   with   variable   arguments   in  
  PB,   but   you   can   define   ANY   unbounded   array   argument   to   workaround   it.  
  Top

24 楼SOFTFUN_CSDN(不知所云~)回复于 2001-07-31 10:30:16 得分 0

~~Top

25 楼pbdesigner(MIS/ERP开发)回复于 2001-07-31 11:30:49 得分 0

其实你这个帖不必结那么早,因为我认为它有一定的深度,所以帮你UP了一下。还望真正的高手指教。Top

相关问题

  • 数据库函数
  • 初学者四个问题:开发环境,同步机制,查函数帮助,查数据结构
  • 数据库函数下载
  • 数据库函数问题!!!
  • 关于c++中函数调用机制
  • 问select函数的查询机制
  • 求sybase数据库的函数详解
  • 寻sybase数据库的函数详解
  • 数据窗口的重绘函数??
  • 关于数据库的函数!!

关键词

  • 函数
  • 数据
  • 系统
  • pb
  • 参数
  • 重载
  • 个数
  • retrieve
  • 实现
  • 调用

得分解答快速导航

  • 帖主:Kanfu
  • pb65
  • pbdesigner
  • wangsw

相关链接

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

广告也精彩

反馈

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