存储过程,函数,视图

//存储过程用于操作数据库,函数于返回数据,存储过程中可以调用存储过程,函数

create or replace (PROCEDURE/FUNCTION) ***(参数 类型)//对于存储过程来讲 参数有in out之分,不写默认in,函数都是in(不用写)

as /return varchar2 IS//存储过程用as,函数用return varchar2 IS

///PRAGMA AUTONOMOUS_TRANSACTION;子事物有异常主事物不受影响他的提价可以带动主事物的提交

变量名  变量类型////赋值的时候变量名:=;引用的时候不要打:

V_STR VARCHAR2(10240) DEFAULT '';

begin

if .. and ... then 

else 

end if;

变量:=case 变量 when  'null' then ''  when 'NULL' then ''  else 变量  end;

when ... then

when  others then 

//return 变量;  函数的时候return

commit;////如果用到了异常处理那么整个存储过程中的操作要设置回滚的话在处理异常的时候写ROLLBACK;函数,视图不做数据操作,只是运算,存储过程才有事物之说

end;

//////视图

create or replace view ** 

as

查询语句而已

几种常用的语法配合使用:

//查询赋值

  SELECT CHK_STATUS

    INTO V_CHK_STATUS

    FROM TB_CD_DEP

   WHERE CD_KEY=V_CD_KEY;

//插入查询   省略value关键字

 INSERT INTO TB_CD_LOG_NEW(

     LOG_KEY,CD_KEY,LOG_TYPE

    ,OPE_MAN_KEY,OPE_MAN

    ,LOG_TIME,LOG_CONTENT

    ,REMARK

    )

    SELECT

     V_LOG_KEY,CD_KEY,'F'

    ,NULL,V_STORAGE_CHK_MAN

    ,SYSDATE,'仓单入库审核操作:审核驳回'

    ,NULL

     FROM TB_CD_DEP

    WHERE CD_KEY=V_CD_KEY;

异常处理:

参数定义处:

 USERDEF_EXCPT EXCEPTION;

 需要抛异常处:

  RAISE USERDEF_EXCPT;

捕捉异常处理处:

 EXCEPTION

    WHEN USERDEF_EXCPT THEN

      ROLLBACK;

      OUTPARA := 'ARTNFLAG=1'||CHR(13)||CHR(10)||'MSG='||TRIM(V_ERRMSG);

      PD_BAS_GETPRO_LOG('PD_CD_CHK','仓单入库审核',INPARA,OUTPARA,'N');

    WHEN OTHERS THEN

      ROLLBACK;

      OUTPARA := 'ARTNFLAG=1'||CHR(13)||CHR(10)||'MSG='||SQLERRM;

      PD_BAS_GETPRO_LOG('PD_CD_CHK','仓单入库审核',INPARA,OUTPARA,'N')

猜你喜欢

转载自yuhuiblog6338999322098842.iteye.com/blog/2352749