如何实现100%的动态数据管道(三)

来源:互联网 发布:阿里云网站设计 编辑:程序博客网 时间:2024/05/01 15:39
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

下面看看,如何根据中间层的数据,构建管道语法:


1.首先建立一个数据窗口对象:d_vdtcolumns


SQL语法是:


 SELECTvdt_columns.utid,  
        vdt_columns.uid,  
        vdt_columns.upkey,  
        vdt_columns.udmid,  
        vdt_columns.udmname,  
        vdt_columns.unulls,  
        vdt_columns.uwidth,  
        vdt_columns.uscale,  
        vdt_columns.uname,  
        vdt_columns.udefault,  
        vdt_columns.ucheck,  
        vdt_columns.utname,  
        vdt_columns.uidentity 
   FROMvdt_columns 
  WHEREutname=:as_tname   


2.准备工作就绪,下面就是主战场了,开始构建数据管道.


考虑到一个管道对象可以传输多个任务,建立一个对象nvo_pipetransattrib保存传输需要的语法:
它包含了一下的instance变量:


string is_objectname              //表名
string is_syntax               //管道语法

string is_sconnect='zw',is_dconnect='daixf'      //源连接和目的数据库连接
string is_ptype,is_pcommit,is_errors         //管道的几个属性
string is_sname,is_dname             //源表名,目的表名
string is_sqlsyntax              //管道的SQL语法



建立一个对象,从数据管道对象继承.

开始构造语法:写一个函数.
nvo_pipetransattribinv_attrib[]

stringls_syntax,ls_sourcesyntax,ls_destsyntax

intli,lj,li_ind,li_find,li_rows,li_identity
stringls_tablename,ls_default,ls_defaultvalue,ls_pbdttype
booleanlb_find
dec ld_uwidth,ld_prec,ld_uscale
string ls_types,ls_dbtype,ls_prikey,ls_name,ls_nulls,ls_msg,ls_title='of_constrpipesyntax()'
nvo_stringlnv_string
nvo_datastorelds_vdtcolumns
booleanlb_key

lds_vdtcolumns=createnvo_datastore
lds_vdtcolumns.dataobject='d_vdtcolumns'
lds_vdtcolumns.settransobject(SrcSqlca)
li=1

of_input(inv_attrib[li])
li_find=pos(inv_attrib[li].is_sqlsyntax,'*',1)
ifli_find>0then
 lds_vdtcolumns.retrieve(as_tablename)
 of_filterimg(lds_vdtcolumns)
 li_rows=lds_vdtcolumns.rowcount()
 forlj=1toli_rows
  ls_name=lds_vdtcolumns.getitemstring(lj,'uname')
  ls_types=lds_vdtcolumns.getitemstring(lj,'udmname')
  li_identity=lds_vdtcolumns.getitemnumber(lj,'uidentity')1<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击