select count(*)
    into Vtabcount
    from IES_TABLESERIALNUMBER
   where TABNAME = PtabName;当我传参的时候 跟踪 Vtabcount为0
但是我在plsql里面执行的时候 select count(*)
    from IES_TABLESERIALNUMBER
   where TABNAME = PtabName; count(*)是1 求解 

解决方案 »

  1.   

    你的这个参数传进去的对不? 你跟踪看下传进去的参数 跟你单独执行sql语句的参数是否一致
    到底有没有符合这个条件的数据啊? 
      

  2.   

    dbms_output.putline(Vtabcount);
    select count(*)
      into Vtabcount
      from IES_TABLESERIALNUMBER
      where TABNAME = PtabName;
     dbms_output.putline(Vtabcount); 
    跟踪下试下
      

  3.   

    不加group by 条件?
      

  4.   

    数据是不是一致 字符要注意大小写create or replace procedure pro_test(v_ename emp.ename%type)
    as
    cnt number;
    begin
    select count(*) into cnt from emp where ename=v_ename;
    dbms_output.put_line(cnt);
    end;scott@YPCOST> exec pro_test('scott');
    0PL/SQL procedure successfully completed.scott@YPCOST> exec pro_test('SCOTT');
    1PL/SQL procedure successfully completed.
      

  5.   


    加个exception捕捉下是否有异常抛出
      

  6.   

    谢谢大家的热心 我知道是什么原因了 我在pl/sql里面 调试的时候 传参是这样传的'IES_SHOP' 其实应该这么传IES_SHOP 这样就对了
      

  7.   

    不管你传递的参数是字符的还是数字的,你都不需要特别制定,直接传递就可以,oracle会根据定义的参数类型来自动转换
      

  8.   

    我还以为是 这条语句的前面有 删除这条数据的动作呢。debug 后没有提交,或者回滚了,那么这条数据又恢复了。
    如果不止一处对一个表修改,要注意运行时的数据,和用sql查出来的可能不一致。
      

  9.   

    遇到跟楼主一样问题,我发现只要select count(*) into  sl 中使用变量(比如procedure中传入的参数作为select into的条件)sl就是0 但是换成值去查询就是正确的,郁闷ing