oracle数据库

oracle之存储过程、函数、包

2018-09-20  本文已影响39人  iszengmh

参考链接

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;
上一篇下一篇

猜你喜欢

热点阅读