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;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值