Powerbuilder一些容易被忽略的语法问题

1.检索列与获取列不一致的问题

在执行代码select columnname1,columnname2 into :c1,:c2 from user;时,如果漏写 :c2,编译时并不会报错,但是这句sql执行是有异常的,此时sqlca.sqlcode<>0,debug时会发现sql执行报错“Mismatch between retrieve columns and fetch columns”,即检索列与获取列不一致,导致实际上这里的c1也无法取到值。

注意:写代码时需注意检索列与获取列不一致时,编译检查语法时不会报错提示出来。

2.变量数据类型的问题

dec  val

select tax into :val from price;

dw_1.setitem(1,'tax',val)

以上代码,如果tax的类型为decimal时正常,但如果tax的类型为string,那么,虽然程序执行上没有问题,val也是能取到值,但是这个值无法赋值给tax,tax的值仍为NULL。即PB在执行sql语句时,变量类型不一致,编译不会报错,执行赋值给tax时也不报错,但实际上sql server是无法成功赋值的,导致执行结果仍为NULL。这种问题很不明显,debug时也会以为,没错啊,val有取到值啊,update属性也没问题啊,但是tax就是空值。

注意:写sql语句时要注意对应变量的数据类型,否则编译检查不出来,后续查问题也容易被忽略。

上一篇:影像组学视频学习笔记(37)-机器学习模型判断脑卒中发病时间(文献报告)、Li‘s have a solution and plan.


下一篇:be动词