Oacle 함수 와 저장 과정

--1、     
create or replace function    (  1     1,  2     2,……) return       as
begin
      
end    ;

--  1
select * from test1;
create or replace function getMaxTage return number as
begin
  declare maxAge number;
  begin
    select max(tage) into maxAge from test1;
    return maxAge;
  end;
end getMaxTage;
--  1  
begin
  dbms_output.put_line(' test1       :'||getMaxTage());
end;
--      SQL  :execute immediate sql  ……

--                 : return       ,as    deterministic   ,           
--       ,                    ,           . 

--     +  
create or replace function row2column(sqlString varchar2)
return varchar2 as
begin 
  declare type cu_type is ref cursor;
  temp_cursor cu_type;
  temp_row1 varchar2(20);
  temp_row2 varchar2(10);
  v_result varchar2(200);
  begin
    open temp_cursor for sqlString;
    fetch temp_cursor into temp_row1,temp_row2;
    while temp_cursor%found loop
      v_result := v_result || temp_row1 || ':' || temp_row2 || ';';
      fetch temp_cursor into temp_row1,temp_row2;
    end loop;
    return v_result; --rtrim(v_result,',')
  end;
end row2column;
--  
select row2column('select tname,tage from test1 where tage >30') v_result from dual;

--2、    
create or replace procedure       (  1 in/out     1,  2 in/out     2,……) as
begin
        
end       ;
--    :
--in    (  in               )
--out    (out                 ,         ,           ,            )
--in out             
--          
create or replace procedure insertTest1(tname in varchar2,tage in number,
                                        ori_count out number,cur_count out number) as
begin 
  declare v_max_id number;
    begin
      if(tname is null or length(tname)=0)then
         return;
      end if;
      if(tage<10 or tage>30)then
         return;
      end if;
      select count(1) into ori_count from test1;
      select max(tid) into v_max_id from test1;
      insert into test1 values(v_max_id+1,tname,tage,'test1');
      select count(1) into cur_count from test1;
    end;
end insertTest1;

--   
create or replace package pkg_test as
  function getMaxTage return number;
  procedure insertTest1(tname in varchar2,tage in number,
                         ori_count out number,cur_count out number);
end pkg_test;

--
create or replace function is_date(params varchar2) return varchar2 is
d date;
begin
  d:=to_date(nvl(params,''),'yyyy-mm-dd hh24:mi:ss');
  return 'Y';
  exception
    when others then
      return 'N';
end;

select is_date('20101010') from dual;

좋은 웹페이지 즐겨찾기