我写了个这么个存储过程,
create or replace procedure test_pro(inta in number)
is 
begin if ( inta=(SELECT count(CODE_SCHEME) FROM CAT_CODE where code_scheme like  concat('2','%')))
 then
 begin
      select * from cat_code
 end 
 else
 begin
      select * from cat_test
 end
 end if end test_pro
有问题,要报错,调试的是要报“TEST_PRO is invalid”,存储过程上面有把红叉,
首先说一下,三个查询的SELECT 语句没有问题能执行。希望大家帮我看看。

解决方案 »

  1.   

    oracle 里的存储过程里
    select要这样写select 字段1 into 变量1 from 表名不能用select *
    并且每个select只允许出来一条纪录最后鄙视0分贴借用某人的签名. 
    贴子分数 <20:对自已的问题不予重视。 
    贴子大量未结:对别人的回答不予尊重。 

      

  2.   

    create or replace procedure test_pro(inta in number) 
    is 
    v_inta NUMBER;
    begin 
    v_inta = SELECT count(CODE_SCHEME) FROM CAT_CODE where code_scheme like  concat('2','%');
    if inta=v_inta then
        select * from cat_code 
    else  
        select * from cat_test 
    end if end test_pro
      

  3.   

    if ( inta=(SELECT count(CODE_SCHEME) FROM CAT_CODE where code_scheme like  concat('2','%')))
    这块有问题
    建议先附值然后再if判断
      

  4.   

    create or replace procedure test_pro(inta in number) 
    is 
    v_inta NUMBER; 
    begin 
     SELECT count(CODE_SCHEME) into v_inta FROM CAT_CODE where code_scheme like  concat('2','%'); 
    if inta=v_inta then 
        select * from cat_code 这里很怪哦,可以查多条记录吗
    else  
        select * from cat_test 这里很怪哦,可以查多条记录吗end if end test_pro
      

  5.   

    if inta=v_inta then 
        select * from cat_code 这样要报错哦,
    else  
        select * from cat_test 这样要报错哦,end if oracle 里的存储过程里 ,select要这样写 
    select 字段1,字段2 into 变量1,变量1 from 表名 
    不能用select * 
    每个select只允许出来一条纪录