今天用Sybase E/SQL C写一个数据库程序的时候,发现一个问题,如下语句:
EXEC SQL SELECT Field1, Field2 INTO :szField1, :szField2 FROM Table1;
如果结果返回多条语句时,会报错。
* SQLCODE=(-16843171)|
** SQL Server Error
** ct_results(): user api layer: external error: This routine cannot be called until all fetchable results have been completely processed.
因为多条记录不能放在一个:szField1变量里面。
那么怎么取第一条呢?
不同的数据库有不同的实现方法,Sybase可以这么做
> set rowcount 1
> select * from Table1
> set rowcount 0
> go
Oracle里面,我记得要简单点,可以这么写
> select * from Table1 where rownum=1
SQLServer里面,就最简单了,这么写
> select top 1 * from Table1
(记录一下,下次发现这样的错误,能迅速找到解药)


