当前位置: 代码迷 >> Oracle开发 >> ora 1007的有关问题求教
  详细解决方案

ora 1007的有关问题求教

热度:109   发布时间:2016-04-24 06:38:07.0
ora 1007的问题求教
定义游标如下:
declare a_cur cursor for select a1,a2,a3,a4,a5,a6,a7,a8,a9 from (select t.*,rownum rn from table where a0=:a0and rownum<=to_number(:lastrow) ) where rn>=to_number(:firstrow);

fetch a_cur into :a1,:a2,:a3,:a4,:a5,:a6,:a7,:a8,:a9

fetch第一条记录的时候,就报1007的错误

如果把最后一个字段a9删除,不参加fetch,则fetch正常,这是怎么回事啊?请大神指导。
------解决方案--------------------
1、确保表中是否有a9字段
2、看你提供的代码
    table表应改重命名为T,但这和你说的错误应该没啥关系
    其他没什么问题,最好能提供原始完整的代码,很可能就是某一个字段写漏了
------解决方案--------------------
引用:
Quote: 引用:

1、确保表中是否有a9字段
2、看你提供的代码
    table表应改重命名为T,但这和你说的错误应该没啥关系
    其他没什么问题,最好能提供原始完整的代码,很可能就是某一个字段写漏了


我在SQLPLUS里面直接运行select a1,a2,a3,a4,a5,a6,a7,a8,a9 from (select t.*,rownum rn from table where a0=:a0and rownum<=to_number(:lastrow) ) where rn>=to_number(:firstrow);是正常的啊

t.*这不报错?你的table名字是t?
------解决方案--------------------
检查select子句的字段和fetch into中的字段是否一致
------解决方案--------------------
提供原始代码吧,目前提供的这些代码都没有什么问题
------解决方案--------------------
引用:
Quote: 引用:

提供原始代码吧,目前提供的这些代码都没有什么问题

原始代码差不多就是这样啊,上面是变量声明,然后获取传入的变量值a0、firstrow和lastrow,然后就是这里了,声明游标,然后fetch,fetch就报错了

你的变量类型是不是不一致啊
------解决方案--------------------
引用:
Quote: 引用:

提供原始代码吧,目前提供的这些代码都没有什么问题

原始代码差不多就是这样啊,上面是变量声明,然后获取传入的变量值a0、firstrow和lastrow,然后就是这里了,声明游标,然后fetch,fetch就报错了

弱弱的问一句,你不会没有open cursor吧
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

提供原始代码吧,目前提供的这些代码都没有什么问题

原始代码差不多就是这样啊,上面是变量声明,然后获取传入的变量值a0、firstrow和lastrow,然后就是这里了,声明游标,然后fetch,fetch就报错了

你的变量类型是不是不一致啊

数据库字段都是varchar2,程序变量都是char

还是你个数不匹配造成的,好好检查一下。以下是官方解释
ORA-01007: variable not in select list
Cause: A reference was made to a variable not listed in the SELECT clause. In OCI, this can occur if the number passed for the position parameter is less than one or greater than the number of variables in the SELECT clause in any of the following calls: DESCRIBE, NAME, or DEFINE. In SQL*Forms or SQL*Report, specifying more variables in an INTO clause than in the SELECT clause also causes this error.
Action: Determine which of the problems listed caused the problem and take appropriate action. 
  相关解决方案