动态SQL的奇怪问题

侠雨飞飞 2006-12-21 07:49:43
以下是核心代码

PREPARE SQLSA FROM :Sqlstatement ;

DESCRIBE SQLSA INTO SQLDA ;

DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA ;

OPEN DYNAMIC my_cursor USING DESCRIPTOR SQLDA ;


do while true


FETCH my_cursor USING DESCRIPTOR SQLDA ;

if sqlca.sqlcode<>0 then
exit
end if


row=dw_2.insertrow(0)
// 显示当前插入的行数
w_wait.st_row.text=string(row)
//循环列
for i=1 to li_count

CHOOSE CASE SQLDA.OutParmType[i]


CASE TypeString! //ok
//messagebox('','TypeString')

Stringvar = GetDynamicString(SQLDA, i)
dw_2.setitem(row,i,stringvar)
case typedouble! //ok
doublevar = GetDynamicNumber(SQLDA, i)
//dw_2.setitem(row,i,doublevar)
case typedate! //ok
//messagebox('','typedate')
datevar=GetDynamicDate(sqlda,i)
//dw_2.setitem(row,i,datevar)

case typedatetime! //ok
//messagebox('','typedatetime')
datetimevar=GetDynamicDateTime(sqlda,i)
//dw_2.setitem(row,i,datetimevar)
case typelong! //常数被sqlserver识别为long型 //ok
longvar = GetDynamicNumber(SQLDA, i)
//dw_2.setitem(row,i,longvar)


case else
messagebox('警告','有无法识别数据格式,请联系程序开发人员')
exit
// CASE typeinteger!
// intvar =integer(GetDynamicNumber(SQLDA, i))
//
// dw_2.setitem(row,i,intvar)
// case typedecimal!
// decvar = GetDynamicNumber(SQLDA, i)



// case typereal!//,typeboolean!
//
// realvar = GetDynamicNumber(SQLDA, i)
// //decvar=round(decvar,2)




END CHOOSE
next

loop
CLOSE my_cursor ;

//-----------------------------------------------------------
上面这个动态SQL就是根据一个 select 语句产生结果集,然后,循环将每一行每一列插入到一个数据窗口对象中

现在的问题是,执行时,游标循环取了几百次后,系统就没有反应了
若将CHOOSE CASE SQLDA.OutParmType[i]里面的内容都注释掉
系统正常
我也单步执行过了
源数据就四种类型
TypeString! typedouble! typedatetime! typelong!
而且我也查过,源数据不存在为空的情况

但是为何循环一定次数就没有反应了呢,正常情况应该不断显示变化的行号
这个结果集有6万多条数据,偶尔也循环成功过(局部代码变化)



...全文
386 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
侠雨飞飞 2006-12-22
  • 打赏
  • 举报
回复
是么,我昨晚也想这样,不行就不用游标了
很邪门,今天早上来,居然不报错了
6万多条都导入进去了
原来报错时候,也是每次都重启程序的
li_d_s 2006-12-22
  • 打赏
  • 举报
回复
游标这种东西该淘汰了,用datastore动态创建dataobject再retrieve效率高的多
侠雨飞飞 2006-12-22
  • 打赏
  • 举报
回复
从SQLSERVER数据库表导数据到ORACLE
kucool 2006-12-22
  • 打赏
  • 举报
回复
-------------------------------
它执行成功过,应该不是代码对错的问题,考虑优化
---------------------------------------------
严重同意
侠雨飞飞 2006-12-22
  • 打赏
  • 举报
回复
嘿嘿
好像不关程序什么事情
PB的问题
虽然动态显示数字没有变化
但循环一直在进行
看上去好像程序死掉一样
最后循环完毕也就正常了
youqiong 2006-12-21
  • 打赏
  • 举报
回复
最好把环境说下,想实现成什么样
或许会有更好的解决办法
==
它执行成功过,应该不是代码对错的问题,考虑优化
youqiong 2006-12-21
  • 打赏
  • 举报
回复
游标
效率低
恐怕是它的问题
数据集可视化效果可参见下方展示。 【数据集概况】 · 检测类别(中文):[弯腰(bending), 躺卧(down), 站立(up)] · 训练集:3240 张 · 验证集:0 张 · 测试集:210 张 · 总计:3450 张 该数据集聚焦于室内居住环境下的人员行为状态识别,通过多角度、多时段的图像采集,全面覆盖了日常生活中常见的身体姿态变化。数据集中包含多种典型动作场景,如站立、弯腰和躺卧等,能够有效支持对个体活动状态的精准判断,适用于智能安防、健康监护及居家行为分析等高价值应用领域。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 100 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9740** mAP50-95 | 0.8780 Precision | 0.9537 Recall | 0.9434 train/box_loss | 0.3695 train/cls_loss | 0.1506 val/box_loss | 0.4416 val/cls_loss | 0.2860 【训练过程分析】 100 轮训练后 mAP50 达到 0.9740,模型收敛良好。Loss 曲线前段快速下降,后段趋于平稳,val_loss 无反弹,没有明显过拟合。mAP50-95 为 0.8780,和 mAP50 差距仅 0.10,框的定位精度也很扎实。 【模型性能评估】 Precision 0.9537、Recall 0.9434,精召双高,模型对弯腰、躺卧、站立的检测能力强。多类检测中,不同类别性能可能有差异,需关注难例类别的表现。 【预测效果展示...

754

社区成员

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

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