|
如何动态执行 SQL 语法
在 PowerBuilder 提供 Embedded SQL 语法,可以直接操作数据库,但是如果需要动态的组合语法应该如何处理。 数据库的语法 ( SQL ) 分为三大系列: 1. DDL ( Data Definition Language ):定义数据库对象使用的语法,常看到的关键词有 Create、Alter、Drop ...。 2. DCL ( Data Control Language ):控制数据库对象使用状况的语法,常看到的关键词有 Grant、Revoke、Commit、Rollback ...。 3. DML ( Data Manipulation Language ):维护数据库数据内容的语法,常看到的关键词有 Insert、Update、Delete、Select ...。 而 PowerBuilder 中的 Embedded SQL 指的就是 DML 标准语法,这种语法的特性就是要预先指定对象名称 ( Table、Column ... ),在程序中是不可以变动的,相信这种限制是因为执行效能的考虑才这样做的。 如果需要动态的组成 SQL 语法,PowerBuilder 也提供了这样的能力,在 Online Help 中就可以找的到,请输入 Dynamic SQL Format 就可以看到有 4 种呼叫格式,其中的区别在于是否要传入参数及取得回传数据,有兴趣的读者可以自行参阅。 其中特别要提的这种动态执行 SQL 方式除了 DML 语法外,也可以接受 DDL、DCL 的语法,必要的时候 AutoCommit 要设成 True 才可以正常执行,以 Sybase ASE 的数据库为例,在 PowerBuilder 程序中要修改数据库使用者的密码: string ls_sqlcmd string ls_caller_passwd string ls_new_passwd
ls_caller_passwd = ... // 原密码 ls_new_passwd = ... // 新密码
ls_sqlcmd = "sp_password " + ls_caller_passwd + ", " + ls_new_passwd
SQLCA.AutoCommit = True // sp_password 才需要设定,是否需要视数据库指令而定 EXECUTE IMMEDIATE :ls_sqlcmd USING SQLCA ; // 执行变更密码 SQLCA.AutoCommit = False // 搭配前项设定
2006-5-29 16:12:59
Posted by jser | 阅读全文() | 回复(0) | 引用通告() | 编辑
|