分解pb的数据管道语法,加入自己的SQL,灵活使用数据管道
2005-02-18 17:15
537 查看
分解pb的数据管道语法,加入自己的SQL,灵活使用数据管道
pb的数据管道具有非常灵活的导入导出功能。
但他自带的retrieve,只可以加入固定的参数,
那么如何灵活的加入自己的SQL呢?
如下:
pb9+sql2k
首先建立u_pipeline对象,加入常用的start函数,如果使用过pb的数据管道就
不在这累您的眼睛了。
直入主题:
首先分析数据管道p_catalog的语法:
u_pipeline.dataobject=“p_catalog“
语法如下:
PIPELINE(source_connect=drms,destination_connect=access,type=replace,commit=100,errors=100,keyname="BookCatalog_x")
SOURCE(name="BookCatalog",COLUMN(type=decimal,name="CATLId",dbtype="decimal(20,0)",key=yes,nulls_allowed=no)
COLUMN(type=decimal,name="RID",dbtype="decimal(18,0)",nulls_allowed=yes)
COLUMN(type=varchar,name="Book_Id",dbtype="varchar(20)",nulls_allowed=no)
COLUMN(type=decimal,name="Series_No",dbtype="decimal(4,0)",nulls_allowed=no)
COLUMN(type=varchar,name="Chapter_No",dbtype="varchar(20)",nulls_allowed=no)
COLUMN(type=varchar,name="Chapter_name",dbtype="varchar(100)",nulls_allowed=no)
COLUMN(type=decimal,name="Page_Number",dbtype="decimal(4,0)",nulls_allowed=no))
RETRIEVE(statement="PBSELECT( VERSION(400) TABLE(NAME=~"BookCatalog~" )
COLUMN(NAME=~"BookCatalog.CATLId~")
COLUMN(NAME=~"BookCatalog.RID~")
COLUMN(NAME=~"BookCatalog.Book_Id~")
COLUMN(NAME=~"BookCatalog.Series_No~")
COLUMN(NAME=~"BookCatalog.Chapter_No~")
COLUMN(NAME=~"BookCatalog.Chapter_name~")
COLUMN(NAME=~"BookCatalog.Page_Number~")
//注意这部分是我们要加入自己的SQL的地方
) ")
DESTINATION(name="BookCatalog",COLUMN(type=double,name="CATLId",dbtype="DOUBLE",key=yes,nulls_allowed=no,initial_value="0")
COLUMN(type=double,name="RID",dbtype="DOUBLE",nulls_allowed=yes)
COLUMN(type=varchar,name="Book_Id",dbtype="VARCHAR(20)",nulls_allowed=no,initial_value="spaces")
COLUMN(type=double,name="Series_No",dbtype="DOUBLE",nulls_allowed=no,initial_value="0")
COLUMN(type=varchar,name="Chapter_No",dbtype="VARCHAR(20)",nulls_allowed=no,initial_value="spaces")
COLUMN(type=varchar,name="Chapter_name",dbtype="VARCHAR(100)",nulls_allowed=no,initial_value="spaces")
COLUMN(type=double,name="Page_Number",dbtype="DOUBLE",nulls_allowed=no,initial_value="0"))
建立函数:wf_getsql_syntax
将以上得到语法赋给
a_sql=u_pipeline.syntax传给函数,
a_sou_tabname为传入的表名可以根据自己的需要改变
a_no为传入的的单号,可以根据自己的需要改变
/函数名 String wf_getsql_syntax(String a_sql,String a_sou_tabname,String a_no)
//a_sql 出入的数据管道的语法 a_sql = pipe.syntax
//a_sou_tabname 要导出的源表名
//a_no 出库单的相关单号
//返回语法 pipe.syntax ls_start+ls_where+ls_end
//作者:林凤孙
String ls_tab_name , ls_col_name //表名和字段名
//列子
//订购单
if upper(left(a_no,3))="DGD" then
ls_tab_name="BookOrderList"
ls_col_name="BodmId"
end if
String ls_start , ls_end , ls_where
long ll_s_pos
ll_s_pos = pos(a_sql,"DESTINATION")
ls_start = mid(a_sql,1,ll_s_pos - 7)
ls_end = mid(a_sql,ll_s_pos - 6)
ls_where="WHERE( EXP1 =~~~""+a_sou_tabname+".RID~~~" OP =~~~"in~~~""+&
+"NEST = PBSELECT( VERSION(400) TABLE(NAME=~~~""+ls_tab_name+"~~~" )"+&
+"COLUMN(NAME=~~~""+ls_tab_name+".RID~~~")"+&
+"WHERE( EXP1 =~~~""+ls_tab_name+"."+ls_col_name+"~~~" OP =~~~"=~~~""+&
+" EXP2 =~~~"'"+a_no+"'~~~" ) ))"
//返回语法
// pipe.syntax = a_sql
return ls_start+ls_where+ls_end
函数结束
执行函数后上面蓝体字就加入了ls_where这部分SQL。
实际SQL为:
select rid,...* from BookCatalog
where rid in(select rid where BookOrderList where BodmId ='DGD-2005-02-02-00003')
加入的即是:where rid in(select rid where BookOrderList where BodmId ='DGD-2005-02-02-00003')
从而实现了灵活控制pb的数据管道pipeline的目的。
多动手,一切ok!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
MSN:gutengcom@hotmail.com
QQ:28588260
pb的数据管道具有非常灵活的导入导出功能。
但他自带的retrieve,只可以加入固定的参数,
那么如何灵活的加入自己的SQL呢?
如下:
pb9+sql2k
首先建立u_pipeline对象,加入常用的start函数,如果使用过pb的数据管道就
不在这累您的眼睛了。
直入主题:
首先分析数据管道p_catalog的语法:
u_pipeline.dataobject=“p_catalog“
语法如下:
PIPELINE(source_connect=drms,destination_connect=access,type=replace,commit=100,errors=100,keyname="BookCatalog_x")
SOURCE(name="BookCatalog",COLUMN(type=decimal,name="CATLId",dbtype="decimal(20,0)",key=yes,nulls_allowed=no)
COLUMN(type=decimal,name="RID",dbtype="decimal(18,0)",nulls_allowed=yes)
COLUMN(type=varchar,name="Book_Id",dbtype="varchar(20)",nulls_allowed=no)
COLUMN(type=decimal,name="Series_No",dbtype="decimal(4,0)",nulls_allowed=no)
COLUMN(type=varchar,name="Chapter_No",dbtype="varchar(20)",nulls_allowed=no)
COLUMN(type=varchar,name="Chapter_name",dbtype="varchar(100)",nulls_allowed=no)
COLUMN(type=decimal,name="Page_Number",dbtype="decimal(4,0)",nulls_allowed=no))
RETRIEVE(statement="PBSELECT( VERSION(400) TABLE(NAME=~"BookCatalog~" )
COLUMN(NAME=~"BookCatalog.CATLId~")
COLUMN(NAME=~"BookCatalog.RID~")
COLUMN(NAME=~"BookCatalog.Book_Id~")
COLUMN(NAME=~"BookCatalog.Series_No~")
COLUMN(NAME=~"BookCatalog.Chapter_No~")
COLUMN(NAME=~"BookCatalog.Chapter_name~")
COLUMN(NAME=~"BookCatalog.Page_Number~")
//注意这部分是我们要加入自己的SQL的地方
) ")
DESTINATION(name="BookCatalog",COLUMN(type=double,name="CATLId",dbtype="DOUBLE",key=yes,nulls_allowed=no,initial_value="0")
COLUMN(type=double,name="RID",dbtype="DOUBLE",nulls_allowed=yes)
COLUMN(type=varchar,name="Book_Id",dbtype="VARCHAR(20)",nulls_allowed=no,initial_value="spaces")
COLUMN(type=double,name="Series_No",dbtype="DOUBLE",nulls_allowed=no,initial_value="0")
COLUMN(type=varchar,name="Chapter_No",dbtype="VARCHAR(20)",nulls_allowed=no,initial_value="spaces")
COLUMN(type=varchar,name="Chapter_name",dbtype="VARCHAR(100)",nulls_allowed=no,initial_value="spaces")
COLUMN(type=double,name="Page_Number",dbtype="DOUBLE",nulls_allowed=no,initial_value="0"))
建立函数:wf_getsql_syntax
将以上得到语法赋给
a_sql=u_pipeline.syntax传给函数,
a_sou_tabname为传入的表名可以根据自己的需要改变
a_no为传入的的单号,可以根据自己的需要改变
/函数名 String wf_getsql_syntax(String a_sql,String a_sou_tabname,String a_no)
//a_sql 出入的数据管道的语法 a_sql = pipe.syntax
//a_sou_tabname 要导出的源表名
//a_no 出库单的相关单号
//返回语法 pipe.syntax ls_start+ls_where+ls_end
//作者:林凤孙
String ls_tab_name , ls_col_name //表名和字段名
//列子
//订购单
if upper(left(a_no,3))="DGD" then
ls_tab_name="BookOrderList"
ls_col_name="BodmId"
end if
String ls_start , ls_end , ls_where
long ll_s_pos
ll_s_pos = pos(a_sql,"DESTINATION")
ls_start = mid(a_sql,1,ll_s_pos - 7)
ls_end = mid(a_sql,ll_s_pos - 6)
ls_where="WHERE( EXP1 =~~~""+a_sou_tabname+".RID~~~" OP =~~~"in~~~""+&
+"NEST = PBSELECT( VERSION(400) TABLE(NAME=~~~""+ls_tab_name+"~~~" )"+&
+"COLUMN(NAME=~~~""+ls_tab_name+".RID~~~")"+&
+"WHERE( EXP1 =~~~""+ls_tab_name+"."+ls_col_name+"~~~" OP =~~~"=~~~""+&
+" EXP2 =~~~"'"+a_no+"'~~~" ) ))"
//返回语法
// pipe.syntax = a_sql
return ls_start+ls_where+ls_end
函数结束
执行函数后上面蓝体字就加入了ls_where这部分SQL。
实际SQL为:
select rid,...* from BookCatalog
where rid in(select rid where BookOrderList where BodmId ='DGD-2005-02-02-00003')
加入的即是:where rid in(select rid where BookOrderList where BodmId ='DGD-2005-02-02-00003')
从而实现了灵活控制pb的数据管道pipeline的目的。
多动手,一切ok!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
MSN:gutengcom@hotmail.com
QQ:28588260
相关文章推荐
- 分解pb的数据管道语法,加入自己的SQL,灵活使用数据管道.
- 动态sql语句基本语法(字段名,表名,数据库名之类作为变量时,必须用动态SQL如ALTER TABLE中使用程序传递的参数)
- SQL语句(增、删、改、查)一、增:有4种方法1.使用insert插入单行数据:语法:insert
- 嵌入式c语言 之数据结构:为什么嵌入式要选择c语言? *c的可移植性好:能在不同平台的结构访问硬件 *c具有简洁紧、使用灵活的语法机制,并能直接访问硬件。 *c具有高效的运行效率
- PB使用数据管道实现数据的自动迁移和备份
- 使用 LINQ To SQL 和实体框架实现灵活的数据访问
- 动态sql语句基本语法(字段名,表名,数据库名之类作为变量时,必须用动态SQL如ALTER TABLE中使用程序传递的参数)
- SOA 数据访问--使用 LINQ To SQL 和实体框架实现灵活的数据访问
- 【PB】使用参数指定的SQL语句向指定的下拉列表框中添加数据
- PB数据窗口使用数组参数执行SQL的IN方法[转]
- 动态sql语句基本语法(字段名,表名,数据库名之类作为变量时,必须用动态SQL如ALTER TABLE中使用程序传递的参数)
- 动态sql语句基本语法(字段名,表名,数据库名之类作为变量时,必须用动态SQL如ALTER TABLE中使用程序传递的参数)
- 使用SQL语法来查询Elasticsearch:Elasticsearch-SQL插件
- RailsCasts中文版,#15 Fun with Find Conditions 使用hash为查询条件以便生成正确语法的SQL查询
- 【Hadoop】HBase上安装使用Phoenix来用sql语句更新操作数据,安装的过程各种坑和经验
- 使用SQL语句从数据库一个表中随机获取数据
- Oracle使用sql语句分页显示数据,C#版
- Silverlight ——使用LINQ to SQL进行数据CRUD操作(上)
- .net2.0中使用SqlBulkCopy进行大批量数据迁移(1)
- ORACLE 常用的SQL语法和数据对象