select count(*) into int_int from PAN_IntegralSpoilSet i where i.activitycid=cid and i.spoilid = SPOILID;
   我调试的时候 这个Int_int = 37
 我很疑惑 但是我再到SQL 窗体里面运行的时候只有 1条记录啊
   
就因为这个 所以老是 ORA-01422: 实际返回的行数超出请求的行数!求救!!

解决方案 »

  1.   

    select count(*) into int_int from
    (select * from PAN_IntegralSpoilSet i where i.activitycid=cid and i.spoilid = SPOILID; 
    )这样就搞定了!!
      

  2.   

    select count(*) into int_int from 
    (select * from PAN_IntegralSpoilSet i where i.activitycid=cid and i.spoilid = SPOILID
    ) ;
      

  3.   

    是在存储过程中吗?若在sql语句中应该用as 不应该用into
    select count(*)as int_int from 
    (select * from PAN_IntegralSpoilSet i where i.activitycid=cid and i.spoilid = SPOILID 
    ) ; 
      

  4.   


    为了保险起见,觉得把count(*) 放在外面的。select num into int_int 
    from (
          select count(*) as num 
          from PAN_IntegralSpoilSet i 
          where i.activitycid=cid 
          and i.spoilid = SPOILID
    )a;
      

  5.   

    cid 和SPOILID是自定义变量吧
    检查这两个值
    还有能不能具体点描述,是pl/sql和sql运行结果不一样?
      

  6.   

     还是不行哦
      我上面定义了 一个 integralset PAN_INTEGRALSPOILSET%rowtype;
       我想返回这条记录
      但是一到那里就报错!
    我是这样写的         select * into integralset from 
            (select * from PAN_IntegralSpoilSet i where i.activitycid=cid and i.spoilid = SPOILID);
      

  7.   

     我是 oracle10g 的写的SP
      PL/SQL 
      

  8.   

    返回多行?
    那你就定义一个游标,把这些记录全部dbms_output出来看看
      

  9.   

    我只返回一条记录 就是通过 那个 CID 和 spoilID 来查询出一条记录
     
      

  10.   

    你的pl/sql和sql结果不同的语句分别是怎么写的
    cid和spoilid值两边一致吗
      

  11.   

      PL/SQL:          select * into integralset from 
            (select * from PAN_IntegralSpoilSet i where i.activitycid=cid and i.spoilid = SPOILID);
      SQL: select *  from (select * from PAN_IntegralSpoilSet i where i.activitycid=cid and i.spoilid = SPOILID);
     他们的结果不一样!
      

  12.   

    还是没搞清楚cid和spoilid是你定义的变量还是表中的字段..
      

  13.   

    是参数 已经传进来了 并且已经有值!
     这两个字段在 PAN_IntegralSpoilSet  里面是两个 ID  
      

  14.   

    ....
    你将这两个参数替换成具体的值在pl/sql和sql中分别运行再比较下结果吧
      

  15.   

    好了 找到原因了 
      是因为 我的参数命名规范问题 
      表中有一个字段 和 spoilid 同名 我重新变了一下 ok了! 谢谢 大家!