oracle笔记

pl/sql中的替代变量:以&加上一个标识符表示,数字类型的替代变量如number类型的替代变量可以以如下形式表示:&age,&no,而字符类型的替代变量则

必须放在单引号内如'&name','&addr'
例:
 declare
v_deptno dept.deptno%TYPE;
v_dname dept.dname%TYPE;
begin
v_deptno:=&no;
v_dname:='&name';
insert into dept(deptno,dname)
values(v_deptno,v_dname);
end;

declare
v_deptno dept.deptno%TYPE:=&no;
v_loc dept.loc%TYPE:='&name';
begin
update dept set loc=v_loc
where deptno=v_deptno;
end;

在pl/sql中外层块不能访问内层块中的变量,而内层块可以访问外层块中的变量;注意每个分支结构、循环体都是一个块,其内部变量在外面是无法访问

的。

假设有一存储过程add_emp(eno number,name varchar2,sal number,job varchar2 default 'clerk',dno number)
在oracle中如果用sql*plus可以用如下方式执行
exec add_emp(1111,'mary',2000,'manger',10);
而如果在pl/sql developer中必须放在plsql块内执行
begin
add_emp(1111,'mary',2000,'manger',10);
end;

函数的定义和调用:
create or replace function get_sal(name in varchar2)
return number
is
v_sal emp.sal%TYPE;
begin
select sal into v_sal from emp where upper(ename)=upper(name);
return v_sal;
exception
when no_data_found then
raise_application_error(-20000,'该雇员不存在');
end;


declare
sal number;
begin
sal:=get_sal('scott');
dbms_output.put_line(sal);
end;

posted @ 2010-09-23 21:27  liancs  阅读(105)  评论(0编辑  收藏  举报