首 页IT知识库翔宇问吧收藏本站
当前位置:翔宇亭IT乐园IT知识库编程技术其它编程

浅析PowerBuilder下动态SQL语句的使用方法

减小字体 增大字体 作者:佚名  来源:转载  发布时间:2010-05-18 09:52:00

(四)第四种格式

当执行有输入参数并且返回结果集的格式在编译时无法确定的SQL语句时可以使用第四种格式。有时候我们执行一些SQL语句时,不仅带有参数而且返回的结果集中有多少个字段,每个字段是什么类型的数据都不确定,这时只能使用第四种格式来实现。

(1)语法

PREPARE DynamicStagingArea FROM SQLStatement{USING TransactionObject};
  DESCRIB DynamicStagingArea INTO DynamicDescriptionObject;
  DECLARE cursor DYNAMIC CURSOR FOR DynamicDescriptionObject;
  OPEN DYNAMIC cursor USING DESCRIPTOR DynamicDescriptionObject;
  FETCH cursor USING DESCRIPTOR DynamicDescriptionObject;
  CLOSE cursor;

其中:DynamicDescriptionObject是PowerBuilder提供的一个数据类型,在PowerBuilder中提供了一个DynamicDescriptionObject类型的全局数据类型SQLDA,用来存放动态SQL语句的输入输出参数。

(2)应用实例

将一个表中满足过滤条件的记录的所有字段取出来分别进行处理,表名在程序运行中由字符串变量传递,字段信息是不确定的。这里我们假设通过字符串变量中传递的表名是base。

STRING lsString,lsSQL,lsTable,lsColumn
  INT liInt
  DATETIME liTime
  LsSQL=”SELECT*FROM base WHERE code like?”
  PREPARE SQLSA FROM lsSQL;
  DESCRIB SQLSA INTO SQLDA;∥SQLDA中含有输入参数的描述
  DECLARE cursor_base DYNAMIC CURSOR FOR SQLSA;
  SetDynamicparm(SQLDA,1,”32%”)∥传递参数值
  OPEN DYNAMIC cursor_base USING DESCRIPTOR SQLDA;
  FETCH cursor_base USING DESCRIPTOR SQLDA;
  DO WHILE SALCA.SQLCODE=0
   FOR liInt=1 TO SQLDA.NumOutPuts
   CHOOSE CASE SQLDA.OutParmType[liInt]
   CASE Typestring!
    lsString=GetDynamicString(SQLDA,liInt)
    ∥处理该字符型的字段
CASE TypeDateTime
    LsDateTime=GetDynamicDateTime(SQLDA,liInt)
    ∥处理该日期型的字段

    ...     ∥处理其他类型的字段

    ...     END CHOOSE
    NEXT
    ∥将一条记录的所有字段取完后作相应的处理
    FETCH cursor_base USING DESCRIPTOR SQLDA;
  LOOP
  CLOSE cursor_base;

上一页  [1] [2] [3] [4] [5]  下一页

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 1分

内 容:

            请注意用语文明且合法,不要发布带有攻击性、侮辱性的言论,谢谢合作!

         通知管理员 验证码:

关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图 | 用户守则 | 联系我们 |
本站大多数内容来自互联网或网站会员发布,如有侵权,请来信告之,谢谢!
Copyright © 2007-2017 biye5u.com. All Rights Reserved.
网站备案号:黑ICP备13005378号-3