@happyfans
2015-10-24T14:31:32.000000Z
字数 2293
阅读 1659
pl/sql
oralce
数据库
PL/SQL是一种强类型的语言,所有变量必须声明(放在DECLARE部分)后才可以使用。
变量声明的语法:
变量名 [CONSTANT] 类型 [NOT NULL] [:=变量值];
变量的名称的规定:
定义变量,不设置默认值
DECLARE
v_result VARCHAR2(30); -- 此处仅声明变量
BEGIN
DBMS_OUTPUT.put_line('v_result的内容【'||v_result||'】'); -- 空字符串即null
END ;
/
定义并初始化变量
DECLARE
v_result1 NUMBER :=100;
v_result2 NUMBER;
BEGIN
v_result2 := 30;
DBMS_OUTPUT.put_line('v_result1 + v_result2 = 【'||(v_result1 + v_result2)||'】');
END;
/
定义常量
DECLARE
v_result CONSTANT NUMBER = 100;
BEGIN
v_result := -20; -- 常量
END;
/
非空变量(定义时指定初始化值)
DECLARE
v_result NUMBER NOT NULL := 100; -- 定义一个非空变量v_result,同时赋值
BEGIN
DBMS_OUTPUT.put_line('v_result变量内容:' || (v_result) ) ;
END;
/
希望某个变量与表中某一列的数据类型一样,可以使用变量定义 表名.字段名%TYPE
的格式。
用户从键盘输入雇员编号,得到雇员信息
DECLARE
v_eno emp.empno%TYPE;
v_ename emp.ename%TYPE;
BEGIN
DBMS_OUTPUT.put_line('请输入雇员编号:') ;
v_eno := &empno;
SELECT ename INTO v_ename FROM emp WHERE empno = v_eno;
DBMS_OUTPUT.put_line('编号为:'||v_eno||'的雇员的名字是:'||v_ename) ;
END;
/
可以定义表中一行记录的类型。当用户使用了SELECT ... INTO ...
将表中的一行记录设置到了ROWTYPE类型的变量之中,就可以使用rowtype变量.表字段的方式取得表中每行的对应列数据。
DECLARE
v_deptRow dept%ROWTYPE;
BEGIN
SELECT * INTO v_deptRow FROM dept WHERE deptno = 10;
DBMS_OUTPUT.put_line('部门编号:'|| v_deptrow.deptno||',名称:'||v_deptrow.dname||',位置:'||v_deptrow.loc) ;
END;
/
eg1(赋值运算):
DECLARE
v_info VARCHAR2(50) := 'IT技术';
v_url VARCHAR2(50) ; -- 没有赋值
BEGIN
v_url := 'http://www.google.com';
DBMS_OUTPUT.put_line(v_info);
DBMS_OUTPUT.put_line(v_url);
END;
/
eg2(关系运算)
DECLARE
v_url VARCHAR2(20) := 'htpp://www.imooc.com';
v_num1 NUMBER := 80;
v_num2 NUMBER := 50;
BEGIN
IF v_num1 > v_num2 THEN
DBMS_OUTPUT.put_line('第一个数字比第二个数字大。');
END IF;
IF v_url LIKE '%imooc%' THEN
DBMS_OUTPUT.put_line('网址中包含imooc');
END IF;
END;
/
Oracle中的数据类型可以划分成4类:
1. 标量类型(SCALAR,也称基本数据类型):用于保存单个值,如:字符串、数字、日期、布尔。
2. 复合类型(COMPOSITE): 该类型可以在内部存放多种数值(类似于多个变量的集合),如:记录类型、嵌套表、索引表、可变数组。
3. 引用类型(REFERENCE):用于指向另一个不同的对象,如:REF CURSOR、REF。
4. LOB类型:大数据类型,最多可以存放4G信息(二进制)。