大家说说数据窗口Retrieve函数的实现机制!
我这几天一直想重载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




