---- 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语句
最新评论