oracle数据库(序列和存储过程)

1.序列
序列是一个计数器,它并不会与特定的表关联。通过创建Oracle序列和触发器实现表的主键自增。 序列的用途一般用来填充主键和计数。
--创建序列
create sequence seq_users
start with 1--开始值为1
increment by 1;--每次增长一个(步长、频次)
--使用序列
select seq_users.nextval from dual;
--删除序列
drop sequence seq_users;
2.存储过程
预先存储好的SQL程序;保存在oracle中;通过名称和参数执行;可带参数,也可返回结果;可包含数据操纵语句、变量、逻辑控制语句等
优点: 执行速度更快;减少网络流通量
定义存储过程的语法:
create or replace procedure 存储过程名
( 参数1 in|out|in out 数据类型,
参数2 in|out|in out 数据类型,
.....)
as
[
声明需要输出的变量
]
BEGIN
sql语句
end;
存储过程的执行:
1. exec 存储过程名(参数或者表达式);
2. begin
存储过程名(参数或者表达式);
end;
实例:无参的存储过程
create or replace procedure hello_pro
as
BEGIN
dbms_output.put_line('hello procedure');
end;

set serveroutput on;
begin
hello_pro;
end;
实例:有参的存储过程
--1.参数的数据类型不能加长度
--2.不加in 或 out时,默认是in,即输入参数
--3.调用有参数的存储过程必须要传参
create or replace procedure with_param_pro(str VARCHAR2)
as
BEGIN
dbms_output.put_line(str);
end;

set serveroutput on;
begin
with_param_pro('aaaaaaa');
end;

实例:通过epmno查找员工姓名和工资
create or replace
procedure user_pro(id_v emp.empno% TYPE)
as
name_v emp.ename% TYPE;
sal_v emp.sal% TYPE;
BEGIN
SELECT ename into name_v from emp where empno=id_v;
SELECT sal into sal_v from emp where empno=id_v;
dbms_output.put_line('姓名:'||name_v||' 工资:'||sal_v);
end;
exec emp_print_pro(7499);
--或者
begin
emp_print_pro(eno=7499);
end;

你可能感兴趣的:(oracle数据库(序列和存储过程))