请教各位兄弟:oracle使用存储过程查询的语句怎么写啊,总是搞不定,求各位帮忙,我要查询的是带条件的,也就是说在过程里面有参数!
类似:select * from Table where field=:param.

解决方案 »

  1.   

    create or replace procedure PROC_DEMO_CURRENT_FLAG(OLD_CORP_EMS_NO varchar2,OLD_MODIFYTIMES integer) 
    IS 
    begin 
        declare 
          I_temp  integer; 
          V_OLD_CORP_EMS_NO varchar2(6); 
          I_OLD_MODIFYTIMES  integer; 
          
        begin 
          V_OLD_CORP_EMS_NO := OLD_CORP_EMS_NO; 
          I_OLD_MODIFYTIMES := OLD_MODIFYTIMES - 1; 
          select count(*) into I_temp from T_DEMO_HEAD 
          where T_DEMO_HEAD.CORP_EMS_NO=V_OLD_CORP_EMS_NO and T_DEMO_HEAD.MODIFY_TIMES=I_OLD_MODIFYTIMES; 
      end; 
      
      exception 
        when NO_DATA_FOUND then 
          dbms_output.put_line('不能修改当前标记'); 
        when others then 
          dbms_output.put_line('错误号' ¦ ¦SQLCODE); 
    end PROC_DEMO_CURRENT_FLAG; 

      

  2.   

    存储过程中不能用
    select *
    要select 字段 
    into
    变量 你的格式不对
      

  3.   

    ^_^
    oracle的存储过程跟sqlserver的过程有点区别,就是不能简单使用select,你的问题我觉得可以使用动态语句执行,如果非要使用存储过程,恐怕你只能将获取的内容写入游标或者索引表中,
      

  4.   

    oracle我也不会看来得学习下了
    那个东西挺爽!!
      

  5.   

    3楼把答案说了.....  楼主会写动态语句不给你个例子好了 . 记得给分!
    create or replace function Noinsert(v_a5   varchar,v_a6    varchar,v_a7   varchar  ) return integer is
      Result integer;
      str  varchar2(500);
      N_COUNT    varchar2(10);
    begin
      
       str:= 'select  count(* )     from  sokutei   where DayHour='||v_a5||'  and   X_Messyu='||v_a6||'  and  Y_Messyu='||v_a7||'';
       execute immediate str  into N_COUNT ; 

        IF N_COUNT = 0  THEN
            RETURN  0;
         else
             RETURN  1;  
        END IF;  
               
    end Noinsert; 
      

  6.   

    存储过程中不能用 
    select * 
    要  select 字段 
    into 
    变量 where xx=parm;你的格式不对
    如果想返回整个select * 的结果 ,可以使用ref 游标,然后再开发语言中还要再定义一个cursor来接受,才能能够使用