PLSQL 是 Oracle 对 sql 语言的过程化扩展,指在 SQL 命令语言中增加了过程处理语句(如分支、循环等),使 SQL 语言具有过程处理能力。把 SQL 语言的数据操纵能力与过程语言的数据处理能力结合起来,使得 PLSQL 面向过程但比过程语言简单、高效、灵活和实用。
PL/SQL 是是由甲骨文公司在 90 年代初开发,以提高 SQL 的功能。
PL/SQL 是嵌入在 Oracle 数据库中的三个关键的编程语言之一(只有 oracle支持)
PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言
1、 PL/SQL 引擎接受 PL/SQL 块并对其进行编译执行
2、 该引擎执行所有过程语句
3、 将 SQL 语句发送给 Oracle 的 SQL 语句执行器
--定义变量,说明部分 (变量说明,游标申明,例外说明 〕
[declare]
--程序体的开始
begin 语句序列
(DML 语句)
--异常处理
[exception]
--程序体的结束
end;
示例:
--书写第一个 plsql 程序块 打印输出字符串
begin
--打印输出
dbms_output.put_line('hello plsql');
end;
变量名与 java 中变量名的定义一样,长度不能超过 32 位
语法:变量名 变量类型
v_name varchar2(20);
varchar2() 32767 个字节
char() 32767
number(m,n)
date
boolean true/false/null
binary_integer 整型
变量在定义时可以初始化,使用 := 赋值
v_name varchar2(20) := ‘hello’;
常见类型的变量定义并赋值
declare
v_name varchar2(20) := 'hello';
v_id binary_integer := 12;
v_pai number(3,2) := 3.14;
v_sex char(1) := 'm';
v_married boolean := true;
v_date date := sysdate;
begin
dbms_output.put_line(v_name);
dbms_output.put_line(v_id);
dbms_output.put_line(v_pai);
dbms_output.put_line(v_sex);
-- if 判断 后面会学
if v_married then
dbms_output.put_line('married');
else
dbms_output.put_line('no marry');
end if;
dbms_output.put_line(v_date);
end;
表类型
类似于 java 中的数组,用来存储某种特定数据类型的数据
语法:
type 表类型名称 is table of 类型 index of binary_integer;
declare
type table_type is table of varchar2(20) index by binary_integer;
v_name table_type;
begin
select name into v_name(0) from t_user where id=1;
select name into v_name(1) from t_user where id=123;
dbms_output.put_line(v_name(0));
end;
简化的表类型
定义一个变量,其数据类型与已经定义的某个数据变量(尤其是表的某一列)类型一致时使用简化编程
语法:%type
t_user.name%type; 表示类型是 t_user.name 字段的类型
declare
v_name t_user.name%type;
begin
select name into v_name from t_user where id=1;
dbms_output.put_line(v_name);
end;
记录类型
作用:可以用来存储一条记录 类似于 java 中的 对象数组
语法:
type 记录类型名 is record(变量名 类型 [,变量名 类型…])
declare
type row_type is record(v_id binary_integer,v_name varchar2(20));
v_record row_type;
begin
select id,name into v_record.v_id , v_record.v_name from t_user where id=1;
dbms_output.put_line(v_record.v_id);
dbms_output.put_line(v_record.v_name);
end;
作用:如果数据类型和数据库中表的结构一致时可以使用记录类型,返回一个记录类型
简写:
%rowtype: 取表中的一条记录中的字段类型组成一个记录类型temp_emp%rowtype 表示当前变量的类型是跟 t_user 表中的记录类型一致
declare
v_user temp_emp%rowtype;
begin
select id,name,age into v_user.id,v_user.name,v_user.agefrom t_user where id=1;
dbms_output.put_line(v_user.id || v_user.name || v_user.age);
end;
定义形参使用& ,如果是字符类型需要使用’’引起来
declare
type table_type is table of varchar2(20) index by binary_integer;
v_name table_type;
begin
select ename into v_name(0) from emp where empno=&no;
dbms_output.put_line(v_name(0));
end;
更多相关知识请戳我主页哦,点个赞也行哦,谢谢!