|
|
原帖由 newkid 于 2011-8-30 22:30 发表 ![]()
不管是何种开发语言都能够从存储过程获得游标,这个游标的访问非常简单,如果仅在这一层进行包装花不了多少代码(而不是你现在做的试图生成SQL那些事情)。所以把SQL交给存储过程去做,大家都省事。
我不否认有复杂计算的应用,但是OLTP不是GIS, 它处理的就是交易数据而已,这种应用就适合用存储过程。
分离没有问题,即使在存储过程中也可以分层次、模块化,我反对的是不必要的“分散”。
我们要支持:不仅分散,而且分布。至于分散到何种程度,由用户决定。我们支持他们,把任务分散到网络的各个节点。他们之间需要进行数据传输。
数据打包就是利于传输。DAU-SDBC系统就是一个打包-传输系统。当然,可以打包成存储过程,那有点罗嗦,打包成SQL语句更简洁些。
实际上,我们之间没有太大分歧,不过你是要求直接写SQL,但是直接写SQL我就没法打包了。反正都是SQL,没啥区别。
结果是,发现即使数据不传输,直接用打包程序写业务逻辑,也挺方便的。不用太费劲,程序还具有了相当的柔性。你虽然也写了个柔性的程序,可是可读性呢?
就程序的可读性来说:
- CASE
- WHEN lv_col.DATA_TYPE ='DATE' THEN
- lv_sql := lv_sql|| '||''"'||lv_col.column_name||'":"''||TO_CHAR('||lv_col.column_name||','''||lv_date_format||''')||''"''';
- WHEN lv_col.DATA_TYPE LIKE '%TIMESTAMP%' THEN
- lv_sql := lv_sql|| '||''"'||lv_col.column_name||'":"''||TO_CHAR('||lv_col.column_name||','''||lv_time_format||''')||''"''';
- ELSE
- lv_sql := lv_sql|| '||''"'||lv_col.column_name||'":"''||'||lv_col.column_name||'||''"''';
- END CASE;
复制代码 -----干嘛呢?一堆标点符号的集合。比写列名看着还累,更晕。
我这里:
DAU_toJSON(&table_DAU,json,0);
一看就明白,数据转换成JSON格式。读者甚至不需要知道JSON的具体内容。里边可能也有类似的代码,封装了,看不见,但你可以无数次使用这个代码。
正在做的,就是从OLTP系统,取出节点参数,送给GIS系统,进行地理显示。乘客可以在地图上点击节点,OLTP服务器提供参数和结果。或者反之。
更广义的讲,你无法预设系统功能。当初做售票系统,没想到用GIS。
不能断言,应用逻辑就是就是加减乘除的集合。例如:你也可能用PL/SQL写出个通用的JSON处理包。那性能可能就杯具了。
所以这点活还是交给别人干。你要是不写成JSON格式呢?我就杯具了,没有模板,我怎么解释你的结果集?有了模板,用你这程序干啥?问题已经解决了。
[ 本帖最后由 yulihua49 于 2011-8-31 11:41 编辑 ] |
|