[关闭]
@happyfans 2015-10-24T06:31:32.000000Z 字数 2293 阅读 1583

PL/SQL编程基础

pl/sql oralce 数据库

变量的声明和赋值

PL/SQL是一种强类型的语言,所有变量必须声明(放在DECLARE部分)后才可以使用。
变量声明的语法:

  1. 变量名 [CONSTANT] 类型 [NOT NULL] [:=变量值];

变量的名称的规定:

  1. 变量名称由字母、数字、下划线、美元符号、井号等组成;
  2. 变量名称必须以字母开头,不能是Oracle中的保留字或者关键字(CREATE、SELECT);
  3. 变量的名称最多30个字符。

定义变量,不设置默认值

  1. DECLARE
  2. v_result VARCHAR2(30); -- 此处仅声明变量
  3. BEGIN
  4. DBMS_OUTPUT.put_line('v_result的内容【'||v_result||'】'); -- 空字符串即null
  5. END ;
  6. /

定义并初始化变量

  1. DECLARE
  2. v_result1 NUMBER :=100;
  3. v_result2 NUMBER;
  4. BEGIN
  5. v_result2 := 30;
  6. DBMS_OUTPUT.put_line('v_result1 + v_result2 = 【'||(v_result1 + v_result2)||'】');
  7. END;
  8. /

定义常量

  1. DECLARE
  2. v_result CONSTANT NUMBER = 100;
  3. BEGIN
  4. v_result := -20; -- 常量
  5. END;
  6. /

非空变量(定义时指定初始化值)

  1. DECLARE
  2. v_result NUMBER NOT NULL := 100; -- 定义一个非空变量v_result,同时赋值
  3. BEGIN
  4. DBMS_OUTPUT.put_line('v_result变量内容:' || (v_result) ) ;
  5. END;
  6. /

使用%TYPE声明变量类型

希望某个变量与表中某一列的数据类型一样,可以使用变量定义 表名.字段名%TYPE的格式。

用户从键盘输入雇员编号,得到雇员信息

  1. DECLARE
  2. v_eno emp.empno%TYPE;
  3. v_ename emp.ename%TYPE;
  4. BEGIN
  5. DBMS_OUTPUT.put_line('请输入雇员编号:') ;
  6. v_eno := &empno;
  7. SELECT ename INTO v_ename FROM emp WHERE empno = v_eno;
  8. DBMS_OUTPUT.put_line('编号为:'||v_eno||'的雇员的名字是:'||v_ename) ;
  9. END;
  10. /

使用 %ROWTYPE声明变量类型

可以定义表中一行记录的类型。当用户使用了SELECT ... INTO ...将表中的一行记录设置到了ROWTYPE类型的变量之中,就可以使用rowtype变量.表字段的方式取得表中每行的对应列数据。

  1. DECLARE
  2. v_deptRow dept%ROWTYPE;
  3. BEGIN
  4. SELECT * INTO v_deptRow FROM dept WHERE deptno = 10;
  5. DBMS_OUTPUT.put_line('部门编号:'|| v_deptrow.deptno||',名称:'||v_deptrow.dname||',位置:'||v_deptrow.loc) ;
  6. END;
  7. /

运算符

eg1(赋值运算):

  1. DECLARE
  2. v_info VARCHAR2(50) := 'IT技术';
  3. v_url VARCHAR2(50) ; -- 没有赋值
  4. BEGIN
  5. v_url := 'http://www.google.com';
  6. DBMS_OUTPUT.put_line(v_info);
  7. DBMS_OUTPUT.put_line(v_url);
  8. END;
  9. /

eg2(关系运算)

  1. DECLARE
  2. v_url VARCHAR2(20) := 'htpp://www.imooc.com';
  3. v_num1 NUMBER := 80;
  4. v_num2 NUMBER := 50;
  5. BEGIN
  6. IF v_num1 > v_num2 THEN
  7. DBMS_OUTPUT.put_line('第一个数字比第二个数字大。');
  8. END IF;
  9. IF v_url LIKE '%imooc%' THEN
  10. DBMS_OUTPUT.put_line('网址中包含imooc');
  11. END IF;
  12. END;
  13. /

数据类型

Oracle中的数据类型可以划分成4类:
1. 标量类型(SCALAR,也称基本数据类型):用于保存单个值,如:字符串、数字、日期、布尔。
2. 复合类型(COMPOSITE): 该类型可以在内部存放多种数值(类似于多个变量的集合),如:记录类型、嵌套表、索引表、可变数组。
3. 引用类型(REFERENCE):用于指向另一个不同的对象,如:REF CURSOR、REF。
4. LOB类型:大数据类型,最多可以存放4G信息(二进制)。

标量数据类型

字符型

流程控制

内部程序块

异常处理

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注