Oracle에서 데이터베이스 저장 프로세스 및 저장 함수 사용

4339 단어
자세히 보기


                                   、    。
         。        

        
       CREATE PROCEDURE             。

        :
create [or replace] PROCEDURE   (    ) 
AS 
        PLSQL    ;

        :               10%   
 
/*
               10%   ,             
*/
SQL> create or replace procedure raiseSalary(empid in number)
    as
    pSal emp.sal%type;--         
    begin
--        
    select sal into pSal from emp where empno=empid;
--       
    update emp set sal = sal*1.1 where empno=empid;
--          
    dbms_output.put_line('   :' || empid || '    
   ' || psal || '    ' || psal*1.1);
    end;
 1  /

Procedure created
--      
--   
SQL> set serveroutput on
SQL> exec raisesalary(7369);

   :7369    
800    880

   
    set serveroutput on
begin
 raisesalary(7369);
end;
/

PL/SQL procedure successfully completed

 
          
        (Function)         ,    ,       。          ,      RETURN  ,       。          、      ,       。

              :

CREATE [OR REPLACE] FUNCTION   (    )
RETURN      
AS
PLSQL    ;

 
  :         。
SQL> /**/
    /* 
             
    */
    create or replace function queryEmpSalary(empid in number)
    return number
   as
    pSal number; --           
    pComm number; --           
   begin
   select sal,comm into psal,pcomm from emp where empno = empid;
   return psal*12+nvl(pcomm,0);
   end;
   /

Function created

   l        

SQL> declare
    v_sal number;
    begin
    v_sal:=queryEmpSalary(7934);
    dbms_output.put_line('salary is:'|| v_sal);
    end;
    /

salary is:15600

PL/SQL procedure successfully completed

SQL> begin
    dbms_output.put_line('salary is:'|| queryEmpSalary(7934));
    end;
    /

salary is:15600

PL/SQL procedure successfully completed

 
          
                      、   PL/SQL  。             (Insert,update,delete)         ,Oracle                。

             
               
                           ,            。

              (FOR EACH ROW)
                        。         old new     ,      。

           
CREATE  [or REPLACE] TRIGGER     
   {BEFORE | AFTER}
   {DELETE | INSERT | UPDATE [OF  ]}
   ON    
   [FOR EACH ROW [WHEN(  ) ] ]
   PLSQL  

         1:               
SQL> create or replace
    trigger securityEmp
    before insert on emp
    declare
    begin
    if to_char(sysdate,'day')in('   ','   ','   ')
    or to_number(to_char(sysdate,'hh24'))not between 8 and 18 then
    raise_application_error(-20001,'            。');
    end if;
   end;
   /

Trigger created

            
    
:old
:new
Insert
       (null)
       
Update
        
     
delete
        
       (null)
  2:    (  emp  sal         )
SQL> create or replace trigger checkSal
    before update of sal on emp
    for each row
    declare
    begin
    if :new.sal<:old.sal then="" raise_application_error="" end="" if="" trigger="" created="" sql=""> update emp set sal=260 where empno=7499;

update emp set sal=260 where empno=7499

ORA-20001:            
ORA-06512:   "SCOTT.CHECKSAL", line 4
ORA-04088:     'SCOTT.CHECKSAL'       

            
            
•              
•                   
•            ,            

           、     
•         Select * from user_triggers;
•         Select * from user_source;


좋은 웹페이지 즐겨찾기