首页 > 数据库 > Oracle > 正文
oracle数据库PL/SQL之基础知识
2012-11-14       个评论      
收藏    我要投稿

oracle数据库PL/SQL之基础知识
 
一) 概述:
oracle在标准sql语言上进行过程性扩展后形成的程序设计语言,是一种oracle特有的,支持应用开发的语言。www.2cto.com  
二) 语法:
1.基本结构
declare
    --声明一些变量、常量、用户定义的数据类型以及游标等
    --这一部分可选,如不需要可以不写
begin
    --主程序体
exception
    --异常处理
end;
/
2.字符集
1)大小写字母
2)数字
3)非显示的字符、制表符、空格和回车
4)数学符号+,-,*,/,<,>,=。
5)间隔符,包括(),{},[],?,!,;,:,",'@,#,%,$,^,&等;
3.数据类型
1)数字类型
NUMBER(P,S),可存储整数和浮点数;P是有效数字个数,S是小数点右边数字的个数;
PLS_INTEGER
BINARY_INTEGER
后两种只能存储整数
与number等价的子类型:DEC、DECIMAL、DOUBLE、PRECISION、INTEGER、INT、NUMERIC、REAL、SMALLINT...
2)字符类型
VARCHAR2:存储变长字符串,VARCHAR2(maxlength)32767字节,数据库中该类型最大长度为4000字节;
CHAR:存储定长字符串,CHAR(maxlength) 32767字节,数据库中该类型最大长度为2000字节
LONG:存储变长字符串,最大长度为32760字节,数据库中该类型最大长度为2GB
NCHAR
NVARCHAR2
后两种类型的长度根据各国字符集的不同而不同;
3)日期类型
DATA,7字节,世纪、年、月、天、小时、分钟和秒;
4)布尔类型
BOOLEAN
5)type定义的数据类型(记录)
TYPE type_name IS RECORD(
variable_name datatype[,
variable_name datatype[,
...
);
real_name type_name;
记录示例:emp.eid%TYPE
 
DECLARE
TYPE myrecord IS RECORD(
id varchar2<10>,
name varchar2<10>
);
real_record myrecord;
BEGIN
SELECT eid,ename INTO real_record FROM emp WHERE eid='001';
DBMS_OUTPUT.PUT_LINE(real_record.id||','||real_reacord.name);
END;
 
DECLARE
TYPE myrecord IS RECORD(
id  emp.eid%TYPE ,
name varchar2<10>
);
real_record myrecord;
BEGIN
SELECT eid,ename INTO real_record FROM emp WHERE eid='001';
DBMS_OUTPUT.PUT_LINE(real_record.id||','||real_reacord.name);
END;
 
DECLARE
myrec emp%ROWTYPE
BEGIN
SELECT * INTO myrec FROM emp WHERE eid='001';
DBMS_OUTPUT.PUT_LINE( myrec .eid||','||  myrec .ename);
END
 
4.控制结构
1)IF语句
IF 条件表达式1 THEN
    语句序列1;
[ELSIF 条件表达式2 THEN
    语句序列2;]
[ELSE
    语句序列3;]
END IF;
2)CASE语句
CASE 检测表达式
WHEN 表达式1 THEN 语句序列1
......
WHEN 表达式n THEN 语句序列n
[ELSE 其他语句序列]
END;
3)NULL值检查
4)循环结构
LOOP...EXIT...END
control_var:=0;
    LOOP
    IF control_var>5 THEN
        EXIT;
    END IF;
    control_var:=control_var+1;
END LOOP;
 
LOOP ... EXIT WHEN ...END
control_var:=0;
    LOOP
    EXIT WHEN control_var>5 
    control_var:=control_var+1;
END LOOP;
 
WHILE...LOOP...END
control_var:=0;
WHILE control_var<=5 LOOP
        control_var:=control_val+1;
END LOOP;
 
FOR...IN...LOOP...END
FRO control_var in 0...5 LOOP
    NULL;
END LOOP;
 
GOTO lable;
... 
<<mark>>
...
IF no>98050 THEN
            GOTO goto_mark;
...
5.表达式
1)字符表达式
'hello'||' world'||'!'=hello world!
2)布尔表达式
AND
OR
NOT
 
点击复制链接 与好友分享!回本站首页
相关TAG标签 基础知识 数据库
上一篇:oracle改ip后orcale服务没法启动的问题
下一篇:oracle数据库PL/SQL之游标
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做实用的IT技术学习网站