저장 함수

2839 단어
저장 함수
  • 무참 저장 함수 만들기get_name, 반환값 문법 있음:
  • create or replace function      return      as PLSQL   
    
    create or replace function get_name return varchar2
    as
    begin
      return'  ';
    end;
    
  • 저장 함수 삭제getName 문법:
  • drop function    
    
  • 호출 저장 방식 1, PLSQL 프로그램
  • declare 
      name varchar2(10);
    begin
      name:=get_name;
      dbms_output.put_line('   :'||name);
    end;
    
  • 호출 저장 방식 2, java 프로그램은 참고 저장 함수인findEmpIncome(번호)를 만들고 7499호 직원의 연수입을 조회하며 in의 사용법을 보여 줍니다. 기본 in
  • --    
    create  or replace function findEmpIncome(p_empno emp.empno%type) return number
    as
     income number;
    begin
     select sal*12 into income from emp where empno=p_empno;
     return income;
    end;
    
    --    
    declare 
     income number;
    begin
     income:=findEmpIncome(7499);
       dbms_output.put_line('       :'||income);
    end;
    
    --        findEmpNameAndJobAndSal(  ),  7499      (return),  (out),  (out),     
    --    
    create or replace function findEmpNameAndJobAndSal(p_empno in number,p_job out varchar2,p_sal out number)
    return varchar2
    as
      p_ename emp.ename%type;
    begin
      select ename,job,sal into p_ename,p_job,p_sal from emp where empno=p_empno;
      return p_ename;
    end;
    --    
    declare 
    p_ename emp.ename%type;
    p_job emp.job%type;
    p_sal emp.sal%type;
    val varchar2(255);
    begin
      val:= findEmpNameAndJobAndSal(7499,p_job,p_sal);
      dbms_output.put_line('7499'||p_ename||'----'||p_job||'----'||p_sal);
    end;
    

    저장 프로세스: 반환 값이 없거나 여러 개의 반환 값이 있을 때 사용 프로세스에 적합하다.저장 함수: 반환 값이 하나 있을 때 함수를 사용하기에 적합합니다.프로세스 함수 사용에 적합한 경우:
  • 데이터베이스에 장기간 보관해야 합니다.
  • 여러 사용자가 동시에 사용해야 합니다.
  • 여러 데이터를 일괄 삽입하는 등 대량의 데이터를 일괄 조작한다.

  • 적합한 경우SQL:
  • 위의 모든 후면에는 SQL을 사용할 수 있습니다.
  • 테이블, 보기, 시퀀스, 인덱스 등 이런 것들은 SQL을 사용하기에 적합하다.

  • emp표에 999개의 기록을 삽입하여 과정의 형식으로 쓴다.
    --    
    create or replace procedure   batchInsert
    as
      i number(4):=1;
    begin
      for i in 1..999
      loop
        insert into emp(empno,ename) values (i,'  ');
      end loop;
    end;
    --    
    exec batchInsert;
    

    함수 버전의 개인 소득세
    create or replace function getrax(sal in number,rax out number) return number
    as
      --sal    
      --bal         
      bal number;
    begin
      bal:=sal-3500;
      if bal<=1500 then
        rax:=bal*0.03-0;
      elsif bal<4500 then
        rax:=bal*0.1-105;
      elsif bal<9000 then
        rax:=bal*0.2-555;
      elsif bal<35000 then
        rax:=bal*0.3-2775;
      elsif bal<80000 then
        rax:=bal*0.45-5505;
      else
        rax:=bal*0.45-13505;
      end if;
      return bal;
    end;
    --    
    declare
      rax number;
      who number;
    begin
      who:=getrax(&sal,rax);
      dbms_output.put_line('      '||rax);
    end;
    

    좋은 웹페이지 즐겨찾기