美文网首页oracle数据库
oracle之存储过程、函数、包

oracle之存储过程、函数、包

作者: iszengmh | 来源:发表于2018-09-20 16:28 被阅读39次

    参考链接

    Oracle创建存储过程、创建函数、创建包——博客园@helong
    ORACLE执行存储过程权限不足——CSDN@He之涅槃

    oracle之存储过程、函数、包

    存储过程(procedure)

    格式

    create or replace procedure procedure_name(Name in out type, Name in out type, ...) is
    begin
      
    end procedure_name;
    

    示例

    --自动创建表格,并update数据
    --dbms_output.put_line()需要先在command(命令行界面)“set serverout on ”打开输出
    create or replace procedure update_qylxid_of_null_for_rygx
    Authid Current_User
    is
      v_date varchar2(8);--定义日期变量
      v_sql varchar2(2000);--定义动态sql
      v_tablename varchar2(20);--定义动态表名
      begin
       select to_char(sysdate,'yyyymmdd') into v_date from dual;--取日期变量
       v_tablename := 'T_'||v_date;--为动态表命名
       v_sql := 'create table '||v_tablename||'as select*from t_qy';--为动态sql赋值
       dbms_output.put_line(v_sql);--打印sql语句
       execute immediate v_sql;--执行动态sql
       v_sql:='update t_qy t set t.LXID=(select LXID from t_qy_qy lx where lx.bh=t.bh and lx.LX =t.dm) where  t.lxid is null';
       dbms_output.put_line(v_sql);--打印sql语句
       execute immediate v_sql;--执行动态sql
    end update_qylxid_of_null_for_rygx;
    

    常见问题

    ORACLE执行存储过程权限不足

    ORACLE执行存储过程权限不足——CSDN@He之涅槃

    --需要增加Authid Current_User
    --AUTHID DEFINER (定义者权限):指编译存储对象的所有者。也是默认权限模式。
    --AUTHID CURRENT_USER(调用者权限):指拥有当前会话权限的模式,这可能和当前登录用户相同或不同(alter session set current_schema 可以改变调用者Schema)
    create or replace PROCEDURE 存储过程名称
    Authid Current_User
    IS 
    BEGIN
    
    ……;
    
    END;
    

    相关文章

      网友评论

        本文标题:oracle之存储过程、函数、包

        本文链接:https://www.haomeiwen.com/subject/ieadwftx.html