1、 CHR
语法: chr(x)
功能: 返回在数据库字符集中与X拥有等价数值的字符。 CHR和ASCII是一对反函数。 经过
CHR转换后的字符再经过ASCII转换又得到了原来的字
符。
使用位置:过程性语句和SQL语句。
2、 CONCAT
语法: CONCAT( string1,string2)
功能:返回string1,并且在后面连接string2。
使用位置:过程性语句和SQL语句。
3、 INITCAP
语法: INITCAP( string)
功能:返回字符串的每个单词的第一个字母大写而单词中的其他字母小写的string。单词
是用.空格或给字母数字字符进行分隔。不是字母的
字符不变动。
使用位置:过程性语句和SQL语句。
4、 LTRIM
语法: LTRIM( string1,string2)
功能:返回删除从左边算起出现在string2中的字符的string1。 String2被缺省设置为单
个的空格。数据库将扫描string1,从最左边开始。当
遇到不在string2中的第一个字符,结果就被返回了。 LTRIM的行为方式与RTRIM很相似。
使用位置:过程性语句和SQL语句。
5、 NLS_INITCAP
语法: NLS_INITCAP( string[,nlsparams])
功能: 返回字符串每个单词第一个字母大写而单词中的其他字母小写的string, nlsparams
指定了不同于该会话缺省值的不同排序序列。如果不指定参数,则功能和INITCAP相同。 N
lsparams可以使用的形式是:
‘ NLS_SORT=sort’
这里sort制订了一个语言排序序列。
使用位置:过程性语句和SQL语句。
6、 NLS_LOWER
语法: NLS_LOWER( string[,nlsparams])
功能:返回字符串中的所有字母都是小写形式的string。不是字母的字符不变。
Nlsparams参数的形式与用途和NLS_INITCAP中的nlsparams参数是相同的。
如果nlsparams没有被包含,那么NLS_LOWER所作的处理和
LOWER相同。
使用位置;过程性语句和SQL语句。
7、 NLS_UPPER
语法: nls_upper( string[,nlsparams])
功能: 返回字符串中的所有字母都是大写的形式的string。 不是字母的字符不变。 nlspara
ms参数的形式与用途和NLS_INITCAP中的相同。如果
没有设定参数,则NLS_UPPER功能和UPPER相同。
使用位置:过程性语句和SQL语句。
8、 REPLACE
语法: REPLACE( string, search_str[,replace_str])
功能: 把string中的所有的子字符串search_str用可选的replace_str替换, 如果没有指
定replace_str,所有的string中的子字符串
search_str都将被删除。 REPLACE是TRANSLATE所提供的功能的一个子集。
使用位置:过程性语句和SQL语句。
9、 RPAD
语法: RPAD( string1,x[,string2])
功能: 返回在X字符长度的位置上插入一个string2中的字符的string1。 如果string2的
长度要比X字符少,就按照需要进行复制。如果string2
多于X字符, 则仅string1前面的X各字符被使用。 如果没有指定string2, 那么使用空格
进行填充。 X是使用显示长度可以比字符串的实际长度
要长。 RPAD的行为方式与LPAD很相似,除了它是在右边而不是在左边进行填充。
使用位置:过程性语句和SQL语句。
10、 RTRIM
语法: RTRIM( string1,[,string2])
功能: 返回删除从右边算起出现在string1中出现的字符string2. string2被缺省设置
为单个的空格.数据库将扫描string1,从右边开始.当遇
到不在string2中的第一个字符,结果就被返回了RTRIM的行为方式与LTRIM很相似.
使用位置:过程性语句和SQL语句。
11、 SOUNDEX
语法: SOUNDEX( string)
功能: 返回string的声音表示形式.这对于比较两个拼写不同但是发音类似的单词而言
很有帮助.
使用位置:过程性语句和SQL语句。
12、 SUBSTR
语法: SUBSTR( string,a[,b])
功能: 返回从字母为值a开始b个字符长的string的一个子字符串.如果a是0,那么它
就被认为从第一个字符开始.如果是正数,返回字符是从左
边向右边进行计算的.如果b是负数,那么返回的字符是从string的末尾开始从右向左进行
计算的.如果b不存在,那么它将缺省的设置为整个字符
串.如果b小于1,那么将返回NULL.如果a或b使用了浮点数,那么该数值将在处理进行以前
首先被却为一个整数.
使用位置:过程性语句和SQL语句。
13、 TRANSLATE
语法: TRANSLATE(string,from_str,to_str)
功能: 返回将所出现的from_str中的每个字符替换为to_str中的相应字符以后的
string. TRANSLATE是REPLACE所提供的功能的一个超集.
如果from_str比to_str长,那么在from_str中而不在to_str中而外的字符将从string
中被删除,因为它们没有相应的替换字符. to_str不能为空
.Oracle把空字符串认为是NULL,并且如果TRANSLATE中的任何参数为NULL,那么结果也是N
ULL.
使用位置:过程性语句和SQL语句。
14、 UPPER
语法: UPPER( string)
功能: 返回大写的string.不是字母的字符不变.如果string是CHAR数据类型的,那么结果
也是CHAR类型的.如果string是VARCHAR2类型的,那么
结果也是VARCHAR2类型的.
使用位置: 过程性语句和SQL语句。
字符函数——返回数字
这些函数接受字符参数回数字结果.参数可以是CHAR或者是VARCHAR2类型的.尽管实际下许
多结果都是整数值,但是返回结果都是简单的NUMBER
类型的,没有定义任何的精度或刻度范围.
16、 ASCII
语法: ASCII( string)
功能: 数据库字符集返回string的第一个字节的十进制表示.请注意该函数仍然称作为ASC
II.尽管许多字符集不是7位ASCII.CHR和ASCII是互为
相反的函数.CHR得到给定字符编码的响应字符. ASCII得到给定字符的字符编码.
使用位置: 过程性语句和SQL语句。
17、 INSTR
语法: INSTR( string1, string2[a,b])
功能: 得到在string1中包含string2的位置. string1时从左边开始检查的,开始的位
置为a,如果a是一个负数,那么string1是从右边开始进行
扫描的.第b次出现的位置将被返回. a和b都缺省设置为1,这将会返回在string1中第一
次出现string2的位置.如果string2在a和b的规定下没有
找到,那么返回0.位置的计算是相对于string1的开始位置的,不管a和b的取值是多少.
使用位置: 过程性语句和SQL语句。
18、 INSTRB
语法: INSTRB( string1, string2[a,[b]])
功能: 和INSTR相同,只是操作的对参数字符使用的位置的是字节.
使用位置: 过程性语句和SQL语句。
19、 LENGTH
语法: LENGTH( string)
功能: 返回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中的相同.如果忽略参数,会话使用缺省排序.
9.Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常。
(1)无参存储过程语法
create or replace procedure NoParPro
as //声明
;
begin // 执行
;
exception//存储过程异常
;
end;
(2)带参存储过程实例
create or replace procedure queryempname(sfindno emp.empno%type)
as
sName emp.ename%type;
sjob emp.job%type;
begin
....
exception
....
end;
(3)带参数存储过程含赋值方式
create or replace procedure runbyparmeters
(isal in emp.sal%type,
sname out varchar,
sjob in out varchar)
as
icount number;
begin
select count(*) into icount from emp where sal>isal and job=sjob;
if icount=1 then
....
else
....
end if;
exception
when too_many_rows then
DBMS_OUTPUT.PUT_LINE('返回值多于1行');
when others then
DBMS_OUTPUT.PUT_LINE('在RUNBYPARMETERS过程中出错!');
end;
其中参数IN表示输入参数,是参数的默认模式。
OUT表示返回值参数,类型可以使用任意Oracle中的合法类型。
OUT模式定义的参数只能在过程体内部赋值,表示该参数可以将某个值传递回调用他的过程
IN OUT表示该参数可以向该过程中传递值,也可以将某个值传出去。
10.存储过程中游标的定义和使用
准备环境
CREATE TABLE EMP(
EMPNO NUMBER(4) NOT NULL,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7, 2),
COMM NUMBER(7, 2),
DEPTNO NUMBER(2)
);
INSERT INTO EMP VALUES (7369, 'SMITH', 'CLERK', 7902, SYSDATE, 800, NULL, 20);
INSERT INTO EMP VALUES (7499, 'ALLEN', 'SALESMAN', 7698, SYSDATE, 1600, 300, 30);
INSERT INTO EMP VALUES (7521, 'WA




