什么是PL/SQL
PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。是面向过程的语言。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。PL/SQL 只有 Oracle 数据库有。 MySQL 目前不支持 PL/SQL 的。
打印Hello World
以declare开头,它是声明的意思,后边跟的是说明部分。
程序以begin开头,以end;结束
/ 表示退出当前编辑,并执行。
PL/SQL已执行后并没有输出Hello World。原因是默认情况下,Oracle数据库的输出开关是关闭的。需要手动打开
set serveroutput on
/ 右斜线表示运行上一次sql或pl/sql程序
如果没有说明部分,
declare可以不写。
PL/SQL程序结构
declare
说明部分(变量声明、光标声明、例外声明)
begin
语句序列(DML语句)
exception
例外处理语句
end;
declare说明部分定义变量或常量。可定义为的基本类型:char varchar2 date number boolean long
set serveroutput on
--使用基本变量类型
declare
--定义基本变量类型
--基本数据类型
pnumber number(7,2);
--字符串变量
pname varchar2(20);
--日期变量
pdate date;
begin
pnumber:=1;
dbms_output.put_line(pnumber);
pname:='Tom';
dbms_output.put_line(pname);
pdate:= sysdate;
dbms_output.put_line(pdate);
--计算明天的日期
dbms_output.put_line(pdate+1);
end;
/
执行结果:
匿名块已完成
1
Tom
10-3月 -17
11-3月 -17
declare说明部分定义引用型变量
例如:my_name emp.ename%type; 表示使用emp表的ename字段的类型作为my_name的类型。
--引用型变量
set serveroutput on
declare
--定义引用型变量:查询并打印7839的姓名和薪水
--pename varchar2(20);
--psal number;
pename emp.ename%type;
psal emp.sal%type;
begin
匿名块已完成
KING的薪水是5000
匿名块已完成
KING的薪水是5000
declare说明部分定义记录型变量
例如:
emp_rec emp%rowtype;
取表中一行的类型作为变量的类型,一行有多个列,所以我们可以把记录性变量理解为数组,而数组中每个元素就代表该行的每一列。如果要引用其中某一列,
例如:
emp_rec。ename := 'admin';
--使用记录型变量,查询并打印7839的姓名和薪水
set serveroutput on
declare
--定义记录型变量:注意代表一行
emp_rec emp%rowtype;
begin
--得到7839一行的信息
select * into emp_rec from emp where empno=7839;
--打印姓名和薪水
dbms_output.put_line(emp_rec.ename||'的薪水是'||emp_rec.sal);
end;
/
匿名块已完成
KING的薪水是5000