PLSQL编程——变量

目录

1.1程序结构

1.2 变量

1.2.1 普通变量

1.2.2 引用型变量

1.2.3 记录型变量


PL/SQL 是过程语言(Procedure Language)与结构化查询语言(SQL)结合而成的编程语言
---PL/SQL 是对 SQL 的扩展
---支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制结构
---可用于创建存储过程、触发器和程序包,给SQL语句的执行添加程序逻辑
---与 Oracle 服务器和 Oracle 工具紧密集成,具备可移植性、灵活性和安全性

1.1程序结构

声明部分、执行部分、异常处理部分

-- Created on 2018/8/23 by MENGMENG.CHEN 
declare 
  --声明变量和游标
  -- Local variables here
  i integer;
begin
  -- Test statements here
  --执行部分
  --【异常处理部分】
  dbms_output.put_line('Hello World');
end;

如果要在黑窗口执行:

set serveroutput on 用于打开打印信息开关

SQLPLUS中执行PLSQL程序 需要在程序最后添加一个 / 标识程序的结束。

1.2 变量

1.普通数据变量:char,varchar2,date,number,boolean,long

2.特殊变量类型:引用型,记录型变量

3.变量声明的方式

 变量名 变量类型(变量长度)  例如: v_name varchar2(30);

4.普通变量赋值方式

  1.直接赋值语句:=           例如:  v_name : = '张三';

   2.语句赋值    使用select...into...赋值,(语法:select 值 into 变量)

示例:

1.2.1 普通变量

-- Created on 2018/8/23 by MENGMENG.CHEN 
declare 
  -- Local variables here
  --姓名
  v_name VARCHAR2(50) := '张三';
  v_salary NUMBER(6,2);
  v_addr VARCHAR2(200);
begin
  -- Test statements here
  v_salary := 1500;
  --语句赋值
  SELECT '杭州' INTO v_addr FROM dual;
  --打印变量
  dbms_output.put_line('姓名:'||v_name||'薪水:'||v_salary||'地址:'||v_addr);
end;

||用于字符串拼接。

运行结果:

1.2.2 引用型变量

  变量的类型和长度取决于表中字段的类型和长度。

  通过表名.列名%TYPE 指定变量的类型和长度。例如: v_name  emp.ename%TYPE;

  引用型变量的好处:

    使用普通变量定义方式,需要指定表中字段的类型,而使用引用类型,不需要知道类型,使用%TYPE是非常好的编程风格,更适应于对数据库定义的更新。

  示例:查询emp表中7839号员工的个人信息,打印姓名和薪水

-- Created on 2018/8/23 by MENGMENG.CHEN 
--查询emp表中7839号员工的个人信息,打印姓名和薪水
DECLARE
  -- Local variables here
  --姓名
  V_NAME EMP.ENAME%TYPE;
  --薪水
  V_SAL EMP.SAL%TYPE;
BEGIN
  -- Test statements here
  --查询姓名和薪水,并赋值给变量
  SELECT ENAME, SAL INTO V_NAME, V_SAL FROM EMP WHERE EMP.EMPNO = 7839;
  --打印变量
  DBMS_OUTPUT.PUT_LINE('姓名:' || V_NAME || '薪水:' || V_SAL);
END;

运行结果:

1.2.3 记录型变量

  接受表中的一整行记录,相当于java中的一个对象

  语法: 变量名称  表名%ROWTYPE,例如: v_emp  emp%ROWTYPE;

  示例:查询emp表中7839号员工的个人信息打印,姓名和薪水

-- Created on 2018/8/23 by MENGMENG.CHEN 
--查询emp表中7839号员工的个人信息
DECLARE
  -- Local variables here
  --记录型变量
  v_emp emp%ROWTYPE;
BEGIN
  -- Test statements here
  SELECT * INTO v_emp FROM EMP WHERE EMPNO='7839';
  --打印信息
  --v_emp相当于一个对象,ename相当于它的属性
  DBMS_OUTPUT.PUT_LINE('姓名:' || v_emp.ename || '薪水:' || v_emp.sal);

END;

运行结果:

猜你喜欢

转载自blog.csdn.net/kingshown_WZ/article/details/89042198