动态 sql

10975037 2005-08-26 11:26:29
兄弟们,我遇到一个小麻烦
就是动态拼sql 语句的. 我要的到某个表的记录中 drpc 字段的最大值. 而这个表是动态从变量的到的.
my_sql= " select max(drpc) into "+ get_drpc+ " from " +get_grsrbm
execute immediate :my_sql using gsqlca;
IF gsqlca.sqlcode <> 0 THEN
MessageBox ("失败", gsqlca.sqlerrtext, Exclamation!)
END IF
messagebox('',get_drpc)
dubug 后 into 后面的值是空 .
如果
my_sql= " select max(drpc) into get_drpc " from " +get_grsrbm
则说没有这个 get_drpc 列.
像这样的 sql 怎么拼才正确 .
...全文
126 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
saiche05 2005-08-26
  • 打赏
  • 举报
回复
my_sql= " select max(drpc) into :get_drpc from " +get_grsrbm
10975037 2005-08-26
  • 打赏
  • 举报
回复
我的表名是个变量的到的.所有就的是用动态的 sql 拼才可以 .
10975037 2005-08-26
  • 打赏
  • 举报
回复
我是一下 sql 3 的
10975037 2005-08-26
  • 打赏
  • 举报
回复
不对的 dubug 你调试一下 就发现你的 my_sql 拼的字符串是 " select max(drpc) into : from " +get_grsrbm into 后面没有东西 . 因为你的 get_drpc 它是一个 null 值 .
balloonman2002 2005-08-26
  • 打赏
  • 举报
回复
要用第三种动态SQL形式,参考下例和下文:

http://www.ddvip.net/program/pb/index3/12.htm

LsSQL="SELECT distinct count(*) FROM fb1 WHERE id='1'" //此处修改为你的拼装的SQL语句
DECLARE cursor_base DYNAMIC CURSOR FOR SQLSA;
PREPARE SQLSA FROM :lsSQL;
OPEN DYNAMIC cursor_base;
FETCH cursor_base INTO :ls_ret;
//DO WHILE SQLCA.SQLCODE=0
//FETCH cursor_base INTO :ls_ret;
//LOOP
CLOSE cursor_base;

messagebox(sqlca.sqlerrtext,ls_ret)
青锋-SS 2005-08-26
  • 打赏
  • 举报
回复
宿主变量不能这样使用,用游标吧。

1,079

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧