关于Oracle存储过程的问题 
我用Select count(*) into n_A from student
就是if n_A = 0 then print(a)else print(b);
但是当n_A 不等于0的时候,他执行的是print(a)这个是什么原因啊?

解决方案 »

  1.   

    具体的原因我不知道,也不知道是什么原理,如果有知道的请告知,但我找到了解决这个问题的方法了,顺便放上来给大家共享下
    这里似乎不能识别“if n_A = 0 then   ”这个语句,但是能识别“if n_A > 0 then   ”
      

  2.   

    create  table test
    (
     id number,
     name varchar(10),
     major varchar(10)
    )
    create sequence my_seq
    insert into test values(my_seq.nextval,'jiaxin','computer')
    commit;declare 
    v_count number;
    begin
    select count(*) into v_count from test;
    if v_count =0 then
    dbms_output.put_line('ok');
    else
    dbms_output.put_line('null');
    end if;
    end;没有问题~~~
      

  3.   

    :)最终的原因我找到了,还是我以前的项目经理提醒我的,值都先初始化过了,最主要的是IF语句中要加上BEGIN...END;才是规范的语句。加上后问题全都解决了。
      

  4.   

    对于三楼的说没有问题,是因为我的举例也不够明确,如果if语句中的执行语句只有单条是没有问题的,如果是多条的话,就有问题了。。例如把你这个过程改成下面这种,你试试看,绝对有问题的。。
    create     table   test 

      id   number, 
      name   varchar(10), 
      major   varchar(10) 

    create   sequence   my_seq 
    insert   into   test   values(my_seq.nextval,'jiaxin','computer') 
    commit; declare   
    n_Count   number;
    v_Status  VARCHAR2(5);
    begin 
    n_count := 0;
    v_Status := '';
    select   count(*)   into   v_Count   from   test; 
      if   v_count   =0   then 
        v_Status = 'OK! Recorders Count:' & v_Count
        dbms_output.put_line(v_Status); 
      else
        v_Status = 'NULL'; 
        dbms_output.put_line(v_Status); 
      end  if; 
    end; 
      

  5.   

    正确的应该是如下:
          
    n_Count number; 
    v_Status VARCHAR2(5); 
    begin   
    n_count := 0; 
    v_Status := ''; 
    select count(*) into v_Count from test;   
        if v_count = 0 then
          BEGIN
            v_Status = 'OK! Recorders Count:' & v_Count 
            dbms_output.put_line(v_Status); 
          END; 
        else 
          BEGIN
            v_Status   =   'NULL';   
            dbms_output.put_line(v_Status); 
          END;  
        end if;   
    end;   
      

  6.   

    v_Status   =   'OK!   Recorders   Count:'   &   v_Count  
    ----------------------------------
    严重错误:
    1、没有分号“;”;
    2、赋值语句是“:=”,不是“=”。准确语句:
    v_Status := 'OK! Recorders Count:' || v_Count;