Oracle知识点简介(3)
来源:未知 责任编辑:责任编辑 发表时间:2013-12-01 14:21 点击:次
声明部分(Declaration section) 声明部分包含了变量和常量的数据类型和初始值。这个部分是由关键字DECLARE开始,如果不需要声明变量或常量,那么可以忽略这一部分;需要说明的是游标的声明也在这一部分。
执行部分(Executable section)
执行部分是PL/SQL块中的指令部分,由关键字BEGIN开始,所有的可执行语句都放在这一部分,其他的PL/SQL块也可以放在这一部分。
异常处理部分(Exception section) 这一部分是可选的,在这一部分中处理异常或错误,对异常处理的详细讨论我们在后面进行。
PL/SQL块语法
[DECLARE]
---declaration statements
BEGIN
---executable statements
[EXCEPTION]
---exception statements
END
PL/SQL块中的每一条语句都必须以分号结束,SQL语句可以使多行的,但分号表示该语句的结束。一行中可以有多条SQL语句,他们之间以分号分隔。每一个PL/SQL块由BEGIN或DECLARE开始,以END结束。注释由--标示。
Oracle中过程介绍
oracle中的过程是一种命名的快,存储在oracle数据库中,相当于sql server中的存储过程。
下面是一个过程的定义:
create or replace procedure query_emp--先删除重名的,后新建
(
v_no in emp.empno%type,--该参数是接受外来实参赋值的(in)
v_name out emp.ename%type,--该参数是在过程内部赋值的(out)
v_sal out emp.sal%type--该参数是在过程内部赋值的(out)
)
is
e_sal_error exception;--声明了一个异常
begin
select ename,sal into v_name,v_sal from emp where empno=v_no;
if v_sal >2500 then
dbms_output.put_line('雇员工资'||v_sal);
raise e_sal_error;
else
null;
end if;
exception
when no_data_found then
dbms_output.put_line('该雇员不存在');
when e_sal_error then
dbms_output.put_line('该雇员工资高于2500了');
end query_emp;
过程的调用:
a.在sql*plus中:
SQL> variable a1 nvarchar2(16);
SQL> variable a2 number;
SQL> execute query_emp(7788,:a1,:a2);
b.在其他pl/sql块中
declare
v_al emp.ename%type;
v_a1 emp.sal%type;
begin
query_emp(v_ename=>v_al,v_sal=>v_a1,v_no=>5678);
end;
我们创建的过程都是存放在数据字典中的,可以用以下语句来查询我们创建好的块:
select * from user_source where name='QUERY_EMP';
将过程的执行权限授予其他用户:
Grant execute procname to username;
删除过程:
Drop procedure procname;
Oracle中函数的介绍
函数和过程一样也是一种命名的块,其主要作用是返回值
如:
create or replace function get_salary_by_deptno
(
v_dept_no in emp.deptno%type,--输入部门号
v_emp_cnt out number--输出部门人数
)
return number
is
Result number;--要返回的工资总数
begin
select sum(sal),count(*) into Result,v_emp_cnt from emp where deptno =v_dept_no;
return(Result);
end get_salary_by_deptno;
在sql中调用函数以及在PL/SQL中调用函数和调用过程是一样的,只不过是调用函数必须放在表达式中:
删除函数
drop function get_salary_by_deptno
Oracle游标介绍
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>