SQL 結果為何出錯?

BenyMo 2002-12-31 03:39:10
這是表的記錄
ID M1 M2 M3
1 基本資料 產品管理 產品區分說明
2 基本資料 產品管理 產品編碼管理
3 基本資料 產品管理 產品資料卡
4 客戶訂單
string ls_m1
DECLARE C_MENU CURSOR FOR
SELECT Distinct M1
FROM MENU ;
open C_menu ;
do until sqlca.sqlcode = 100
FETCH C_MENU INTO :ls_m1;
loop
為什麼得出的結果是
`客戶訂單
基本資料
基本資料
?
...全文
22 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
arqhaifeng 2002-12-31
  • 打赏
  • 举报
回复
循环的写法有问题。应该这样写:
.
.
.
open c_menu;
fetch c_menu into :ls_ml;
do until sqlca.sqlcode = 100
fetch c_menu into :ls_ml;
loop
或者
open c_menu;
do
fetch c_menu into :ls_ml;
if sqlca.sqlcode = 100 then
exit
end if
.
.
.
loop
shuyf2000 2002-12-31
  • 打赏
  • 举报
回复
定义一个数据窗口对象,SQL语句是:

SELECT Distinct M1
FROM MENU //主要是别忘了 Distinct,否则如果就出现多个 基本资料
例存为: d_store

然后用数据存储(一般书上都提昌用数据存储代替游标)
datastore ids_temp //定义一个数据存储变量
ids_temp = create datastore //实例化
//定义你的变量同你的
string ls_ml
int i , ll_RowCount //定义一个循环变量和行总数变量

ids_temp.dataobject = "d_store" //例存为: d_store 那的
ids_temp.SetTransObject(SQLCA)
ll_RowCount = ids_temp.Retrieve() //检索数据
if ll_RowCount <= 0 then Return //如果没有记录,则....
//循环得到数据
For i=1 to ll_RowCount
ls_ml = ids_temp.object.m1[i] //一般列名都为字段名,所以我用了ml
...
Next


//看起来是烦了点,但可提高程序的性能,且满足了您的要求。

BenyMo 2002-12-31
  • 打赏
  • 举报
回复
結果還是一樣.
ice2water 2002-12-31
  • 打赏
  • 举报
回复
string ls_m1
DECLARE C_MENU CURSOR FOR
SELECT Distinct M1
FROM MENU
group by m1 ; //加一句
open C_menu ;
do until sqlca.sqlcode = 100
FETCH C_MENU INTO :ls_m1;
loop

740

社区成员

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

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