sql修改语句:在PB中动态修改SQL语句

江苏省南通电信局网管中心 黄莹

---- PowerBuilder是图形界面Client/Server应用开发环境可以很容易开发出功能强大应用在当前应用非常广泛

---- 数据库应用通常进行项确定工作在编写和编译时就可以确定完整SQL语句但是当需要使用PowerBuilder不支持嵌入SQL语句或者在编译时不能确定SQL语句具体格式和参数时只能在运行过程中构造SQL语句需要使用动态SQL语句以Format 4 动态SQL语句为例使用格式如下:

DECLARE Cursor | Procedure
     DYNAMIC CURSOR | PROCEDURE
     FOR DynamicStagingArea ;

PREPARE DynamicStagingArea FROM SQLStatement
     {USING TransactionObject} ;

DESCRIBE DynamicStagingArea
     INTO DynamicDescriptionArea ;

OPEN DYNAMIC Cursor | Procedure
     USING DESCRIPTOR DynamicDescriptionArea} ;

EXECUTE DYNAMIC Cursor | Procedure
     USING DESCRIPTOR DynamicDescriptionArea ;

FETCH Cursor | Procedure
     USING DESCRIPTOR DynamicDescriptionArea ;

CLOSE Cursor | Procedure ;

---- 在使用动态SQL语句时需准备DynamicStagingArea对象(全局对象SQLSA)和DynamicDescriptionArea对象(全局对象SQLDA)定义游标或过程读取PREPARE语句中SQL语句以及语句中介绍说明参数和类型执行FETCH语句后相关逐条读取并处理检索结果
---- 动态SQL语句虽然解能够在运行过程中构造SQL语句但在实际应用中较少使用若SELECT语句结果序列可以通过重新指定DataWindow对象SELECT语句思路方法达到动态修改SQL语句功能运用时首先用Describe读取DataWindow对象SELECT语句用Replace等修改出符合要求SELECT语句并且可以增加检索条件再用SetSQLSelect为DataWindowControl控件指定修改后SELECT语句

---- 代码:

sql_,sql_
long   start_pos=1
old_str     //select语句中需要替换
_str    //替换可以是结构相同表名

dw_1.transobject(sqlca)
sql_=dw_1.Describe("DataWindow.Table.Select")

// Find the first occurrence of old_str.
start_pos = Pos(sql_, old_str, start_pos)

// _disibledevent=-1) then
messagebox("","不能修改SQL语句!",Exclamation!)
   
end

dw_1.transobject(sqlca)
dw_1.retrieve


---- 使用SetSQLSelect有要求和限制更改后SELECT语句在结构上必须和原先语句匹配在执行SetSQLSelect的前必须用SetTrans或SetTransObject设置DataWindowControl控件内部事务对象另外 DataWindow对象数据源必须是个不带参数SELECT语句如果需要使用检索参数可以在代码中修改SQL Select语句 
Tags:  sql修改语句怎么写 sql语句修改表 动态sql语句 sql修改语句

延伸阅读

最新评论

发表评论