oracle 同义词视图 存储过程

/*
数据库对象
同义词 synonym 相当于给表一个别名
对于表 创建同义词
*/
create public synonym syn_emp for emp;

select * from scott.syn_emp;

–授权查询同义词
grant select on scott.syn_emp to mrsha

grant create synonym to scott;

–视图 view 一段保存的sql 查询语句
–创建视图
create or replace view v_emp
as
select * from emp;

–使用sys用户授权创建视图
grant create view to scott;

–使用视图
select * from v_emp;

–查询员工信息表和部门表 连表查询 两张表的数据
create or replace view v_emp_dept
as
select e.ename,e.job,d.dname,d.loc from emp e
inner join dept d
on e.deptno=d.deptno

select * from v_emp_dept;

create or replace view v_ename
as select ename from emp;

–授予某个用户查询某个视图的权限
grant select on v_ename to mrsha;

select * from scott.v_ename;

–视图中的数据是否可以修改(能够修改) 是否会影响原表的数据 (会影响)
update v_emp set ename=‘小强’ where empno=7369

select * from emp;

–视图中的数据是否可以删除,删除之后也会影响原表的数据
delete v_emp where empno=7369

delete v_emp_dept where ename=‘ALLEN’;

–视图是否可以嵌套创建 是否可以无限嵌套 (不建议视图反复嵌套)
select * from v_emp_dept;

create or replace view vv_emp_dept
as select job,dname from v_emp_dept

select * from vv_emp_dept

–存储过程(过程)

create or replace procedure p_test(eno number)
is
–定义变量
sname varchar2(20);
begin
select ename into sname from emp where empno=eno;
dbms_output.put_line(sname);

  exception when no_data_found then
            dbms_output.put_line('没有数据');
            when too_many_rows then
            dbms_output.put_line('行太多');

end;

–调用过程
begin
p_test(7369);
end;

–使用过程完成增删改

–添加的过程
create or replace procedure p_insertUsers(uname varchar2,age number)
is
begin
insert into users values(u_id.nextval,uname,age);
end;

begin
p_insertUsers(‘小强’,20);
end;

–删除
create or replace procedure P_deleteUsers(u_id number)
is
begin
delete users where id=u_id;
end;

begin
P_deleteUsers(21);
end;

–存储过程的参数和返回值 通过传入的参数编号查询员工姓名返回
create or replace procedure p_select(eno in number,sname out varchar2)
is
begin
select ename into sname from emp where empno=eno;
end;

–调用
declare
eno number(10);
sname varchar2(20);
begin
eno:=7788;
p_select(eno,sname);
dbms_output.put_line(sname);
end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值