图学PowerBuilder----关于分号与SELECT INTO



对于初学PB的人来说,有时就会遇到这样的问题。像我今天就遇到了。乍一看没错呀!SQL语句写了好几年了,没什么错呀!而且还是语法错误。晕死。
下面来讨论一下错误的原因。
PB做为一款数据库应用程序开发工具有其自身的特点。为什么要在开发工具前加上数据库应用程序的定语呢!因为与其它开发工具脱离数据库的开发环境不同的是,PB的开发建立在数据库连接的基础上。其它的开发工具在开发过程中与数据库打交道的都是SQL、ODBC、ADO等。通常情况下它们都是只做业务处理功能开发,开发过程中与数据库是断开,甚至是无关的。至于数据库操作直接写出SQL语句然后交给ADO一类的去执行并返回结果。而PB的开发必须建立在数据库的连接基础上。与SQL有关的代码在保存时都要交付数据库中去检查正确性。例如上面的语句,在PB中首先检查语法是否正确,然后它会去数据库中检查表,字段是否存在等。而在其它开发环境中,SQL语句一般做为字符串处理。直到在数据库中执行时才会检查是否错误并返回对应的错误信息。说的有点远了。针对上面的错误语句,实际上有两种错误。

1、缺少SQL语句结尾的分号

在PB的Script中,语法类似VB,一般情况下,语句后是不加分号的。当然你加上分号也不报错。但在SQL相关的语句后必须加分号。如CONNECT;DISCONNECT;SELECT;等。因为上面我们已经说了,PB的IDE在你保存时会检查SQL语句的正确性。以前用别的语言写程序时总是用分号的。新换之后同事告诉我语句后不用加分号,所以就总出现SQL语句后不加分号的低级错误。虽然在PB中非SQL语句可不加分号,但从开发规范本身来说,我认来还是都加上比较好。

2、缺少接收的变量

在其它的开发工具中(近年来),针对数据库的查询操作会返回一个数据记录,或数据集等,然后交由程序去处理。而据我了解在PB中并没有这种机制,针对于数据库查询的结果必须要给出一个接收的变量,针对返回多条记录的,需要采用游标(类似DOT NET 中的DATAREADER)逐行处理。
对于接收变量还有一种用法:
SELECTselect max(flowno) into :flowno:id from bil_flowlist
id是用来做指示变量的,当flowno正常取值时,id的值为0,去空值的话id为-1,发生类型转换错误时,id为-2,

正确的处理

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值