200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > oracle 同义词视图 存储过程

oracle 同义词视图 存储过程

时间:2023-02-19 18:42:00

相关推荐

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 thendbms_output.put_line('没有数据');when too_many_rows thendbms_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;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。