当前位置: 代码迷 >> PB >> 这个PB SQL脚本如何写
  详细解决方案

这个PB SQL脚本如何写

热度:157   发布时间:2016-04-29 09:24:49.0
这个PB SQL脚本怎么写?
SQL code
    SELECT F_ZSL INTO :VDTMP FROM vsTmpTbl WHERE XSTD_TDLS=:psTdls ;

FROM后面的"vsTmpTbl "是个string型的变量 存储着传进来的表名
可是按照上面的写法貌似PB不让保存
求帮助

------解决方案--------------------
只能用游标或数据存储
C/C++ code
string ls_sql,VDTMP,psTdls,vsTmpTblvsTmpTbl = "你的表名"ls_sql = "SELECT F_ZSL FROM " + vsTmpTbl + "WHERE XSTD_TDLS='" + psTdls +"' "declare my_cursor dynamic cursor for SQLSA;prepare SQLSA from :ls_sql ;open dynamic my_cursor ;fetch my_cursor into :VDTMP;do while SQLcA.sqlcode=0    messagebox("", VDTMP)    fetch my_cursor into :VDTMP;loopclose my_cursor;
------解决方案--------------------
数据存储
C/C++ code
datastore ldslds = create datastorestring ls_syntax,error_syntaxfromSQL,error_createstring ls_sql,VDTMP,psTdls,vsTmpTbllong ivsTmpTbl = "你的表名"ls_sql = "SELECT F_ZSL FROM " + vsTmpTbl + "WHERE XSTD_TDLS='" + psTdls +"' "ls_syntax = sqlca.Syntaxfromsql( ls_sql, 'Style(Type=Grid)', error_syntaxfromSQL)IF len(error_syntaxfromSQL) > 0 then    messagebox("提示","SQL语法错误!")    returnelse    lds.create(ls_syntax, error_create)    IF len(error_create) > 0 then        messagebox("提示","建立数据存储错误!")        return    end ifend iflds.settransobject(sqlca)lds.retrieve()for i = 1 to lds.rowcount()    VDTMP = lds.getitemstring(i, "F_ZSL")    messagebox("", VDTMP)end ifdestroy lds
------解决方案--------------------
把这部分代码封装为函数,方便重用
C/C++ code
ls_syntax = sqlca.Syntaxfromsql( ls_sql, 'Style(Type=Grid)', error_syntaxfromSQL)IF len(error_syntaxfromSQL) > 0 then    messagebox("提示","SQL语法错误!")    returnelse    lds.create(ls_syntax, error_create)    IF len(error_create) > 0 then        messagebox("提示","建立数据存储错误!")        return    end ifend if
  相关解决方案