oracle存储过程使用笔记

(一)关于编写存储过程需要注意以下几点:
1>赋值符号 :=
  逻辑等 =
2>注释单行代码用  --
  注释代码块用    /*---*/
3>字符串连接符    ||
4>变量在变量声明区内进行声明:IS和BEGIN之间
5>变量声明方式通常有如下三种:
   1)单个变量
     mo_flag        NUMBER     :=0;
     content        TABLE.CONTENT%TYPE;
   2)数组
     TYPE data_type IS TABLE OF VARCHAR2(10) INDEX BY BINARY_INTEGER;   --引用形式为data_type(i)
     TYPE rule_type IS RECORD (data_id TABLE.ID%TYPE,
                                                 data_name TABLE.NAME%TYPE
                                                 );                                       --引用形式为rule_type(i).data_id
6>经常用到的一个内置函数DECODE:
DECODE(id,1,'Southlake',
                       2,'San Francisco',
                       3,'New Jersey',
                       4,'Seattle',
                          'Non-domestic')
当id是1时,返回Southlake;是2时,返回San Francisco;依次,如果都不是时,返回Non-domestic

(二)PL/SQL块结构
1>触发器
CREATE OR REPLACE TRIGGER trigger_name
AFTER|BEFORE INSERT|UPDATE|DELETE ON table_name
FOR EACH ROW
DECLARE
  (声明部分)
BEGIN
  (程序体)
EXCEPTION
  (异常处理部分)
END;
2>存储过程
CREATE OR REPLACE PROCEDURE name(参数) IS
  (声明部分)
BEGIN
  (程序体)
EXCEPTION
  (异常处理部分)
END;
3>函数
CREATE OR REPLACE FUNCTION func_name(参数) RETURN data_type IS
  (声明部分)
BEGIN
  (程序体)
EXCEPTION
  (异常处理部分)
END;

注:DECLARE在触发器中进行变量声明的时候需要,存储过程和函数的变量声明时不需要

(三)应用和调试的时候需要注意以下几种应用:
1>SET SERVEROUTPUT ON BUFFER 20000;
用dbms_output.put_line('strin_content');可以在存储过程中输出信息,对存储过程进行调试;
只有将serveroutput变量设为on后,信息才能显示在屏幕上
2>EXECUTE procedure_name;
执行一个存储过程
3>select function() from dual;
通过sql语句执行一个函数
4>DBMS_JOB.SUBMIT(job,'TEST_WARN_PROC;',sysdate,'sysdate+30/(24*60)');
表示这个Job的执行频率是每隔30分钟,DBMS_JOB.SUBMIT(任务号,要执行的存储过程,下次执行的时间,每次间隔的时间)
sysdate+x/24            每隔x小时执行一次
sysdate+x/(24*60)       每隔x分钟执行一次
sysdate+x/(24*60*60)    每隔x秒执行一次
5>当报出错误信息的时候,其中指出的行号说明如下:
行号的计数从关键字DECLARE开始,如果没有则BEGIN语句的行号为1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值