PB中执行下面的SQL不成功,请高手来指点一下

fengemail8 2010-07-05 02:17:16
UPDATE SK_XFJLB
SET JZstatus = :li_flag
WHERE (XF_PH in ( :as_phlist )AND XF_JZBZ='否' ) ;

IF SQLCA.SQLCODE = 0 THEN
COMMIT USING SQLCA;
ELSE
ROLLBACK USING SQLCA;
Messagebox('','失败.')
END IF

as_phlist 参数为(0001,0002,0003)
如果as_phlist为 0001是可以成功的,
如果是多个以上,则不能成功了
...全文
110 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengemail8 2010-07-05
  • 打赏
  • 举报
回复
xys_777 谢谢提醒,不过XF_PH 位数是固定的,不会存在冲突
永生天地 2010-07-05
  • 打赏
  • 举报
回复
但是建议改成这样
UPDATE SK_XFJLB
SET JZstatus = :li_flag
WHERE (CHARINDEX(','+XF_PH+',',','+:as_phlist+',') >0
AND XF_JZBZ='否'
) ;
永生天地 2010-07-05
  • 打赏
  • 举报
回复
gx .
fengemail8 2010-07-05
  • 打赏
  • 举报
回复
UPDATE SK_XFJLB
SET JZstatus = :li_flag
WHERE (CHARINDEX(XF_PH,:as_phlist) >0
AND XF_JZBZ='否'
) ;

自已解决
fengemail8 2010-07-05
  • 打赏
  • 举报
回复
jimwoo 谢谢,不是这样的
jimwoo 2010-07-05
  • 打赏
  • 举报
回复
试试这样
String ls_sql, as_phlist
Int li_flag

as_phlist = "'0001','0002','0003'"

ls_sql = "UPDATE SK_XFJLB SET JZstatus = " + String(li_flag) +&
" WHERE XF_PH in (" + as_phlist + ") AND XF_JZBZ='否' "
EXECUTE IMMEDIATE :ls_sql;
fengemail8 2010-07-05
  • 打赏
  • 举报
回复
换句话说,在PB中更新多条记录是怎么写的

752

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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