PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。是面向过程的语言。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。PL/SQL 只有 Oracle 数据库有。 MySQL 目前不支持 PL/SQL 的。
以declare开头,它是声明的意思,后边跟的是说明部分。
程序以begin开头,以end;结束
/ 表示退出当前编辑,并执行。 PL/SQL已执行后并没有输出Hello World。原因是默认情况下,Oracle数据库的输出开关是关闭的。需要手动打开 set serveroutput on / 右斜线表示运行上一次sql或pl/sql程序如果没有说明部分, declare可以不写。
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 --得到7839的姓名和薪水select ename,sal into pename,psal from emp where empno=7839;--打印姓名和薪水dbms_output.put_line(pename||'的薪水是'||psal);end; / 使用 into 关键字 赋值 匿名块已完成 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