建表
CREATE TABLE TYIntegralRule(
  ID                   NUMBER NOT NULL PRIMARY KEY,           --编号
  Rule                 VARCHAR2(50) NOT NULL,                 --规则描述
  RuleNum              INT NOT NULL,                          --增加的积分数量
  MaxPrice             INT,                                   --价格范围(高)
  MinPrice             INT,                                   --价格范围(低)
  MaxLog               INT                                    --每天计算积分的最大登陆次数
);create sequence  seq_TYIntegralRule increment   by   1   start   with   1   nomaxvalue    nocache;--建立序列insert into TYIntegralRule(Id,Rule,Rulenum,maxlog) values(seq_TYIntegralRule.Nextval,'登陆',1,3);当只是查询的时候,select * from TYIntegralRule where Rule = '登陆';  可以查询出该条数据。但是当建立存储过程的时候
create or replace procedure Login1(loginIntegral out int)
as
begin
       select rulenum into loginIntegral from TYIntegralRule where Rule = '登陆';
   EXCEPTION
    WHEN OTHERS THEN
      DBMS_output.PUT_LINE(SQLERRM);
                     
end;
会报 未找到数据 异常。哪位大哥帮忙看下吧,我刚开始玩oracle实际的存储过程太长,就贴个短的。。问题就出在这里。

解决方案 »

  1.   

    COMMIT ?SELECT RULENUM
      FROM TYINTEGRALRULE
     WHERE INSTR(RULE,'登陆') > 0;SELECT RULENUM
      FROM TYINTEGRALRULE;跑下这2个QUERY比下结果。
      

  2.   

    commit过了现在情况是,在其他地方随便查都可以,但是在存储过程里,怎么查都没数据- -#
      

  3.   

    问题比较怪异。
    create or replace procedure Login1(loginIntegral out int) 
     cnt number;
    as 
    begin 
          select count(*) into cnt from TYIntegralRule where Rule = '登陆'; 
          dbms_output.put_line('count值为:'||cnt);      select rulenum into loginIntegral from TYIntegralRule where Rule = '登陆'; 
      EXCEPTION 
        WHEN OTHERS THEN 
          DBMS_output.PUT_LINE(SQLERRM); 
                        
    end; 看看有没有记录,如果有记录数,那就报社科院吧,灵异现象。