动态SQL在PB中遇到的问题!?急!!解决了给高分!!!

hwking 2002-11-14 12:27:12
我在使用动态SQL的时候遇到了一个问题,希望高手指点一下:

我的想法是:现在有一个动态数组orgcode[],我想利用动态SQL
在表u_sale_top中提取orgcode(列名)等于数组中的项,然后
插入到表u_sale_top_temp中,语句如下:

for j=1 to i
string orgcodej,sql_insert
orgcodej=orgcode[j]
PREPARE SQLSA
FROM "insert into u_sale_top_temp(orgcode,barcode,itemname,sumqty,saleamount,costamount,subprice,subrate) select orgcode,barcode,itemname,sumqty,saleamount,costamount,subprice,subrate from u_sale_top where orgcode=? ";
EXECUTE SQLSA USING :orgcodej;
if sqlca.sqlcode=0 then
MessageBox("test","成功执行"+trim(orgcodej)+"门店")
end if
next

执行的结果只是插入orgcode=orgcode[1]的数据,
这是怎么回事呢?
(MessageBox消息框显示执行是成功了啊!)
...全文
50 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ropriest 2002-11-16
  • 打赏
  • 举报
回复
i=?
long5 2002-11-16
  • 打赏
  • 举报
回复
同意 byfq(不愿放弃)
byfq 2002-11-16
  • 打赏
  • 举报
回复
好象根本用不到动态sql

for j=1 to upperbound(orgcode)
insert into u_sale_top_temp(orgcode,barcode,itemname,sumqty,saleamount,costamount,subprice,subrate) select orgcode,barcode,itemname,sumqty,saleamount,costamount,subprice,subrate from u_sale_top where orgcode=:orgcode[j];
if sqlca.sqlcode=0 then
MessageBox("test","成功执行"+trim(orgcode[j])+"门店")
end if
next

aduo 2002-11-16
  • 打赏
  • 举报
回复
如果你打开了一个游标,必须关闭之后才能再定义再使用,你N次PREPARE SQLSA
当然只反映一次了
一定要用循环解决问题吗,这个办法好笨样的,除非有特殊的用意
bierhoff 2002-11-14
  • 打赏
  • 举报
回复
orgcodej,这个是什么意思?
j随循环而变 么??
hwking 2002-11-14
  • 打赏
  • 举报
回复
对啊!
就是数组中的第j元素!

401

社区成员

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

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