PL/SQL学习。缺点(移植性不好,如果换了数据库则存储过程不能用了)。
创建存储过程。create or replace procedure szy_pro1(过程名) is
begin
--执行的操作,sql语句。
end;
调用存储过程有两种形式,1.exec 过程名(参数1,参数2 ....) 2.call 过程名(参数1,参数2 .....)
PL/SQL部分相当于是块的编程,块有三部分构成:定义部分declare ,执行部分 begin ,例外处理部分 exception ;
例如 declare v_ename varchar2(5)
begin
select ename into v_ename from emp where empno=&no;
dbms_output.put line('雇员名字是'||v_ename);
end;
带异常处理的
declare v_ename varchar2(5)
begin
select ename into v_ename from emp where empno=&no;
exception when no_data_found then
dbms_output.put line('没有数据');
end;
存储过程的 创建
(1)可以输入雇员名称,新工资,可修改雇员名称
create procedure szy_pro1(spName varchar2,newSal number) is
begin
--执行部分
update emp set sal=newSal where ename=spName;
end;
函数,是返回特定数据。函数里面必有return语句。
(2)该函数返回固定员工的工资
create function 函数名(name varchar2) return number is mysal number(7,2);
begin
select sal into mysal from emp where ename =name;
end;
然后便是这个函数的调用,
var a number;
call 函数名('SCOTT') into:a;
包,包用于在逻辑上组合过程和函数,他由包规范和包体两部分组成
包的创建
create or replace package szy_package is
procedure update_sal(name varchar2,newsal number);
function annual_income(name varchar2) return number;
end;
包只有含函数和过程的说明,但没有实现。包体便是实现包里的函数和过程。
建立包体 create package body szy_package is
procedure update_sal(参数) is
begin
end;
annual_income(参数) is
begin
end;
如何调用包体的过程或则函数,则 包名.函数名/过程名
call szy_package.update_sal(参数...);