--打印Hello World
declare(没有说明部分的话可以不写,程序以begin开始,以end;结束)
--说明部分(变量,光标或者例外)
begin
--程序体
dbms_output.put_line('Hello World');--(程序包)
end;
/ --退出编辑环境并且执行PL/SQL程序,前提是没有语法错误
--打开输出开关
set serveroutput on
/--退出...
Hello World
借助图形化工具编写PLSQL程序 Oracle SQL Developer
--查看程序包的结构
desc dbms_output;
PL/SQL 全称 Produce Language/SQL 过程语言的SQL
PLSQL是Oracle对sql语言的过程化扩展(面向过程的语言)
--指在SQL命令语言中增加了过程处理语句(分支,循环),是SQL语言具有过程处理的能力
传统的update语言是命令式语言。
SQL语言 + 过程语言 面向过程,简单,高效,灵活,实用
数据操纵能力 数据处理能力
不同数据库的SQL扩展
Oracle:PL/SQL DB2:SQL/PL SQL Server:Transac-SQL(T-SQL) MySQL:limit
PL/SQL的程序结构
declare 说明部分(变量说明,光标说明,例外说明)
begin 语句序列(DML语句)
exception 例外处理语句
end;
*定义基本变量 类型 char varchar2 number date boolean long 赋值形式:boolean :=true
一个较为完整的例子:
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;
/
引用型变量
举例:my_name emp.ename%type; 引用emp表中的ename字段的类型
需求:查询员工号为1的员工姓名和薪水
declare
pename emp.ename%type;
psal emp.salary%type;
begin
--得到1的姓名,薪水,变量的顺序和查询语句顺序对应
select ename,sal into pename,psal from emp where empno=1;
--打印姓名和薪水
dbms_output.put_line(pename||'的薪水是'||psal);
end;
/
记录型变量
举例:emp_rec emp%rowtype;
记录型变量分量的引用
举例:emp_rec.ename:=‘ADAMS’;
--使用记录型变量完成同样需求
set serveroutput on
declare
--定义记录型变量:注意代表一行
emp.rec emp%rowtype;
begin
--得到1这一行的信息
select * into emp_rec from emp where empno=1;
--打印姓名和薪水
dbms_output.put_line(emp_rec.ename||'的薪水是'||emp_rec.sal);
end;
/