JavaScrip Zone


新发表

新评论

留言信息

链接收藏

『中国群落博客』

免费注册博客通道

快速登陆


如何动态执行 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) | 引用通告() | 编辑

..................................................
博客的精神于写自己某一刻的思想或心动!
..................................................
当然要是你愿意就是拿来做记事本也可以!
..................................................
群落博客将提供全程免费服务!免费注册!
..................................................
欢迎您成为群落博客的成员!使用之前请先看系统帮助>>>>系统帮助
..................................................

免费注册群落博客【点击完成注册】
..................................................

发表评论:

    昵称:
    密码: (游客无须输入密码)
    主页:
    标题: