什么是PL/SQL程序:PL/SQL是oracle对sql语言的过程化扩展。
指在SQL命令语言中增加 了过程处理语句(如分支,循环等),使SQL语言具有过程处理能力。
PL/SQL的程序结构:
declare
说明部分(变量说明,光标申明,例外说明 )
begin
语句序列(DML语句)
exception
例外处理语句
end;
/
--举例
--定义基本变量类型
declare
pname varchar2(30);
pnum number(7,2);
pdate date;
begin
--赋值 :=类似于java的=;
pname:='tom';
pnum:=1;
pdate:=sysdate;
dbms.output.put_line(pname||pnum||pdate);
end;
结果是:tom18-11月-16;
定义引用型变量
举例:
my_name emp.name%type;(将emp表中的字段name的类型作为my_name的类型)
--定义引用型类型,查询并打印工号为7878的员工的名字和薪水
declare
pname emp.name%type;
psal emp.sal%type;
begin
--将emp表中工号为7788的员工的字段name和sal分别传入pname和psal,注意顺序不能换
select name,sal into pname,psal from emp where empno=7788;
--||类似于java中的+,连接字符串
dbms.output.put_line(pname||'的薪水是'||psal);
end;结果是:tom的薪水是5000;
/
记录型变量
举例:
emp_rec emp%rowtype;(将emp表中一行的类型,作为emp_ref的类型,emp_ref相当于一个Object数组)
desclare
emp_ rec emp%rowtype;
begin
--在emp表中工号为7878的员工的所有信息传入emp_ref中;
select* into emp_rec from emp where empno=7878;
--从emp_rec中获得工号为7878的姓名和工资,并打印出
dbms.output.put_line(emp_rec.name||'的薪水'||emp.sal) ;
end;
判断用户在键盘输入的数字
/*命令设置环境变量serveroutput为打开状态,从而使得pl/sql程序能够在SQL*plus中输出结果 */
set serveroutput on
/*接受一个键盘输入字符串 num可以是任意名, prompt 发出提示*/
--num 指地址值,表示在该地址上保存了输入的值
accept num prompt "请输入一个数字 ";
decpare
--表示地址要加&
pnum number:=#
begin
if pnum:=1 then dbms.output.put_line("你输入数字1");
--注意是elsif
elsif pnum:=2 then dbms.output.put_line(“你输入数字2”);
else dbms.output.put_line("你输入了其它数字");
--if语句以endif结尾
endif;
end;
**********************************************
declare
--声明一个记录类型
type emp_record is record (
v_sal employees.salary%type,
v_name employees.last_name%type,
v_date employees.hire_date%type);
--定义一个记录类型的成员变量
v_emp_record emp_record;
begin
select salary, last_name ,hire_date into v_emp_record from employees where employee_id=200;
dbms_output.put_line(v_emp_record.v_sal||v_emp_record. v_name||'日期'||v_emp_record.v_date);
end;