oracle存储过程超详细使用手册

发布时间 : 星期二 文章oracle存储过程超详细使用手册更新完毕开始阅读

功能: 返回string的字节单位的长度.CHAR数值是填充空格类型的,如果string由数据类型CHAR,它的结尾的空格都被计算到字符串长度中间. 如果string是NULL,返回结果是NULL,而不是0. 使用位置: 过程性语句和SQL语句。

20、LENGTHB

语法: LENGTHB(string)

功能: 返回以字节为单位的string的长度.对于单字节字符集LENGTHB和LENGTH是一样的.

使用位置: 过程性语句和SQL语句。

21、NLSSORT

语法: NLSSORT(string[,nlsparams])

功能: 得到用于排序string的字符串字节.所有的数值都被转换为字节字符串,这样在不同数据库之间就保持了一致性. Nlsparams的作用和

NLS_INITCAP中的相同.如果忽略参数,会话使用缺省排序. 使用位置: 过程性语句和SQL语句。

oracle 存储过程的基本语法

1.基本结构

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 判断

IF V_TEST=1 THEN BEGIN do something END; END IF;

4.while 循环

WHILE V_TEST=1 LOOP BEGIN XXXX END; END LOOP;

5.变量赋值

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.带参数的cursor

CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID; OPEN C_USER(变量值); LOOP

FETCH C_USER INTO V_NAME; EXIT FETCH C_USER%NOTFOUND; do something END LOOP; CLOSE C_USER;

8.用pl/sql developer debug

连接数据库后建立一个Test WINDOW

在窗口输入调用SP的代码,F9开始debug,CTRL+N单步调试

关于oracle存储过程的若干问题备忘

1.在oracle中,数据表别名不能加as,如: select a.appname from appinfo a;-- 正确

select a.appname from appinfo as a;-- 错误

也许,是怕和oracle中的存储过程中的关键字as冲突的问题吧

2.在存储过程中,select某一字段时,后面必须紧跟into,如果select整个记录,利用游标的话就另当别论了。

select af.keynode into kn from APPFOUNDATION af where af.appid=aid and af.foundationid=fid;-- 有into,正确编译

select af.keynode from APPFOUNDATION af where af.appid=aid and af.foundationid=fid;-- 没有into,编译报错,提示:Compilation

Error: PLS-00428: an INTO clause is expected in this SELECT statement

3.在利用select...into...语法时,必须先确保数据库中有该条记录,否则会报出\异常。

联系合同范文客服:xxxxx#qq.com(#替换为@)