1.基本结构 sql
CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS 变量1 INTEGER :=0; 变量2 DATE; BEGIN END 存储过程名字
2.SELECT INTO STATEMENT
将select查询的结果存入到变量中,能够同时将多个列存储多个变量中,必须有一条
记录,不然抛出异常(若是没有记录抛出NO_DATA_FOUND)函数
BEGIN SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx; EXCEPTION WHEN NO_DATA_FOUND THEN xxxx; END;
3.IF 判断code
IF V_TEST=1 THEN BEGIN do something END; END IF;
4.while 循环orm
WHILE V_TEST=1 LOOP BEGIN XXXX END; END LOOP;
5.变量赋值io
V_TEST := 123;
6.用for in 使用cursor变量
... IS CURSOR cur IS SELECT * FROM xxx; BEGIN FOR cur_result in cur LOOP BEGIN V_SUM :=cur_result.列名1+cur_result.列名2 END; END LOOP; END;
7.异常中的错误代码和错误消息select
Oracle内置函数SQLCODE和SQLERRM是特别用在OTHERS处理器中,分别用来返回Oracle的错误代码和错误消息。
OTHERS处理器应该是异常处理块中的最后的异常处理器,由于它是用来捕获除了别的异常处理器处理之外的全部的Oracle异常,因此在程序的最外层使用一个OTHERS处理器的话,将能够确保全部的错误都会被检测到。
在一个内在的异常中,SQLCODE返回Oracle错误的序号,而SQLERRM返回的是相应的错误消息,错误消息首先显示的是错误代码。SQLCODE返回的是负数,除非Oracle的错误为“ORA-01403:NO DATA FOUND”(译:ORA-01403:未找到数据),当Oracle错误为“ORA-01403:NO DATA FOUND”时,其对应的SQLCODE为+100。对于用户自定义的异常,SQLCODE返回的是+1,而SQLERRM返回的是User-Defined Exception。
一个Oracle的错误消息最多只能包含512个字节的错误代码。若是没有异常被触发,则SQLCODE返回0,SQLERRM返回“ORA-0000:normal, successful completion”。循环
... EXCEPTION WHEN OTHERS THEN ROLLBACK; c_sqlcode := SQLCODE; c_sqlerrm := SUBSTRB(SQLERRM, 1, 512); o_sts := ‘-1’; c_error := c_process_sts_error; END PROC_SEND_RECEIVE_ERR_INS;