存储过程和视图、函数、同义词、表分区、触发器等
2015-04-06 11:58
357 查看
--存储过程实现根据雇员编号查询雇员姓名和薪水
create or replace procedure find_detail(id in number,
name out varchar2,
sal out varchar2) is
begin
select e.ename, e.sal into name, sal from emp e where e.empno = id;
dbms_output.put_line('雇员编号:' || id || ',雇员姓名:' || name || ',雇员薪水:' || sal);
end;
--执行存储过程find_detail
select * from emp;
Declare
id emp.empno%type;
name emp.ename%type;
sal emp.sal%type;
begin
find_detail(7369, name, sal);
end;
--创建emp所有员工的薪水
create or replace procedure find_all_sal(c_all_sals out sys_refcursor) is
begin
open c_all_sals for select ename, sal from emp;
end;
--执行存储过程c_all_sals
select * from emp;
Declare
c_all_sals sys_refcursor;
sal emp.sal%type;
name emp.ename%type;
begin
find_all_sal(c_all_sals);
loop
fetch c_all_sals into name, sal;
exit when c_all_sals%notfound;
dbms_output.put_line('员工姓名:' || name || ',员工薪水:' || sal);
end loop;
end;
--查询存储过程视图
select * from all_procedures; select * from user_procedures; select * from dba_procedures;
--通过函数来查询指定雇员编号的姓名、工资
create or replace function f_query_emp(id emp.empno%type, name out emp.ename%type) return emp.sal%type is
sal emp.sal%type;
begin
select e.ename, e.sal into name, sal from emp e where e.empno = id;
return sal;
exception
when others then dbms_output.put_line('出现异常');
end;
--调用函数
select * from emp;
DECLARE
name emp.ename%type;
sal emp.sal%type;
id emp.empno%type;
BEGIN
id := &id;
sal := f_query_emp(id, name);
dbms_output.put_line('雇员编号:' || id || ',姓名:' || name || ',薪水' || sal);
END;
--创建触发器
select * from emp;
create table tb as select * from emp;
select * from tb;
delete from tb ;
create trigger tri_tb after delete on emp for each row
begin
insert into tb values(:old.empno,:old.ename,:old.job,:old.mgr,:old.hiredate,:old.sal,:old.comm,:old.deptno);
end;
delete from emp where emp.empno=7369;
insert into emp select * from tb;
--模式触发器
--创建表
create table event_ddl(
event varchar2(20),
username varchar2(10),
owner varchar2(10),
objname varchar2(20),
objtype varchar2(10),
time DATE
)
--创建触发器
create or replace trigger tr_ddl
after ddl on scott.schema
begin
insert into event_ddl
values(ora_sysevent,ora_login_user,ora_dict_obj_owner,ora_dict_obj_name,ora_dict_obj_type,sysdate);
end;
--ddl操作
create table temp(a int);
--删除表操作
drop table temp;
--查看结果
select * from event_ddl;
--删除触发器
drop trigger tr_ddl;
drop trigger tri_tb;
--以上是模式触发器
/***************************************************************************************************
20140813
数据库设计
****************************************************************************************************/
create sequence seq start with 1 increment by 1
order nocycle nocache;
select seq.nextval from dual;
select seq.currval from dual;
drop sequence seq;
--区间分区
create table tb_season (
id number(10),
type varchar2(20),
sale number(10,3),
time date
)
partition by range(time)(
partition p1 values less than (to_date('2013-04-01','yyyy-mm-dd')),
partition p2 values less than (to_date('2013-07-01','yyyy-mm-dd')),
partition p3 values less than (to_date('2013-10-01','yyyy-mm-dd')),
partition p4 values less than (maxvalue)
);
select * from tb_season partition (p1);
select * from tb_season partition (p2);
select * from tb_season partition (p3);
select * from tb_season partition (p4);
--同义词
create public synonym ty for scott.emp;
select * from ty;
drop public synonym ty;
select * from all_synonyms;
--登录scott账户,在命令窗口执行
conn scott/tiger@orcl;
/**********
创建序列,未指定精度
***********/
create table yaoshan (
id number(20),
name varchar2(20)
);
create sequence seq_biaomi start with 1 increment by 1
minvalue 1 maxvalue 9999999 nocycle cache 10;
--插入数据
insert into yaoshan values(seq_biaomi.nextval,'qn'||seq_biaomi.currval);
select * from yaoshan;
------------------------------------
create sequence seq_biaoming start with 1 increment by 1
minvalue 1 maxvalue 9999999 nocycle cache 10;
/***************************************************************************************************/
/* 创建视图 */
/***************************************************************************************************/
create or replace force view v_table as select * from emp where deptno = 30 order by sal asc;
select * from v_table;
--练习题
select * from dept;
create or replace view v_dept as select deptno 部门编号,dname 部门名称,loc 部门地址 from dept;
select * from v_dept;
insert into v_dept values(50,'ll','v');
delete from v_dept where 部门编号=50;
--查看用户下面的哪些表的字段可以修改,表名要大写
select * from user_updatable_columns where table_name='EMP';
create or replace procedure find_detail(id in number,
name out varchar2,
sal out varchar2) is
begin
select e.ename, e.sal into name, sal from emp e where e.empno = id;
dbms_output.put_line('雇员编号:' || id || ',雇员姓名:' || name || ',雇员薪水:' || sal);
end;
--执行存储过程find_detail
select * from emp;
Declare
id emp.empno%type;
name emp.ename%type;
sal emp.sal%type;
begin
find_detail(7369, name, sal);
end;
--创建emp所有员工的薪水
create or replace procedure find_all_sal(c_all_sals out sys_refcursor) is
begin
open c_all_sals for select ename, sal from emp;
end;
--执行存储过程c_all_sals
select * from emp;
Declare
c_all_sals sys_refcursor;
sal emp.sal%type;
name emp.ename%type;
begin
find_all_sal(c_all_sals);
loop
fetch c_all_sals into name, sal;
exit when c_all_sals%notfound;
dbms_output.put_line('员工姓名:' || name || ',员工薪水:' || sal);
end loop;
end;
--查询存储过程视图
select * from all_procedures; select * from user_procedures; select * from dba_procedures;
--通过函数来查询指定雇员编号的姓名、工资
create or replace function f_query_emp(id emp.empno%type, name out emp.ename%type) return emp.sal%type is
sal emp.sal%type;
begin
select e.ename, e.sal into name, sal from emp e where e.empno = id;
return sal;
exception
when others then dbms_output.put_line('出现异常');
end;
--调用函数
select * from emp;
DECLARE
name emp.ename%type;
sal emp.sal%type;
id emp.empno%type;
BEGIN
id := &id;
sal := f_query_emp(id, name);
dbms_output.put_line('雇员编号:' || id || ',姓名:' || name || ',薪水' || sal);
END;
--创建触发器
select * from emp;
create table tb as select * from emp;
select * from tb;
delete from tb ;
create trigger tri_tb after delete on emp for each row
begin
insert into tb values(:old.empno,:old.ename,:old.job,:old.mgr,:old.hiredate,:old.sal,:old.comm,:old.deptno);
end;
delete from emp where emp.empno=7369;
insert into emp select * from tb;
--模式触发器
--创建表
create table event_ddl(
event varchar2(20),
username varchar2(10),
owner varchar2(10),
objname varchar2(20),
objtype varchar2(10),
time DATE
)
--创建触发器
create or replace trigger tr_ddl
after ddl on scott.schema
begin
insert into event_ddl
values(ora_sysevent,ora_login_user,ora_dict_obj_owner,ora_dict_obj_name,ora_dict_obj_type,sysdate);
end;
--ddl操作
create table temp(a int);
--删除表操作
drop table temp;
--查看结果
select * from event_ddl;
--删除触发器
drop trigger tr_ddl;
drop trigger tri_tb;
--以上是模式触发器
/***************************************************************************************************
20140813
数据库设计
****************************************************************************************************/
create sequence seq start with 1 increment by 1
order nocycle nocache;
select seq.nextval from dual;
select seq.currval from dual;
drop sequence seq;
--区间分区
create table tb_season (
id number(10),
type varchar2(20),
sale number(10,3),
time date
)
partition by range(time)(
partition p1 values less than (to_date('2013-04-01','yyyy-mm-dd')),
partition p2 values less than (to_date('2013-07-01','yyyy-mm-dd')),
partition p3 values less than (to_date('2013-10-01','yyyy-mm-dd')),
partition p4 values less than (maxvalue)
);
select * from tb_season partition (p1);
select * from tb_season partition (p2);
select * from tb_season partition (p3);
select * from tb_season partition (p4);
--同义词
create public synonym ty for scott.emp;
select * from ty;
drop public synonym ty;
select * from all_synonyms;
--登录scott账户,在命令窗口执行
conn scott/tiger@orcl;
/**********
创建序列,未指定精度
***********/
create table yaoshan (
id number(20),
name varchar2(20)
);
create sequence seq_biaomi start with 1 increment by 1
minvalue 1 maxvalue 9999999 nocycle cache 10;
--插入数据
insert into yaoshan values(seq_biaomi.nextval,'qn'||seq_biaomi.currval);
select * from yaoshan;
------------------------------------
create sequence seq_biaoming start with 1 increment by 1
minvalue 1 maxvalue 9999999 nocycle cache 10;
/***************************************************************************************************/
/* 创建视图 */
/***************************************************************************************************/
create or replace force view v_table as select * from emp where deptno = 30 order by sal asc;
select * from v_table;
--练习题
select * from dept;
create or replace view v_dept as select deptno 部门编号,dname 部门名称,loc 部门地址 from dept;
select * from v_dept;
insert into v_dept values(50,'ll','v');
delete from v_dept where 部门编号=50;
--查看用户下面的哪些表的字段可以修改,表名要大写
select * from user_updatable_columns where table_name='EMP';
相关文章推荐
- SQL Server 中查看加密的存储过程、函数,视图,触发器
- 查看SQL SERVER 加密存储过程,函数,触发器,视图
- mysql查看所有存储过程,函数,视图,触发器,表,分页
- 解密SQL Server 2005中被加密的存储过程、函数、视图、触发器
- 存储过程解密(破解函数,过程,触发器,视图.仅限于SQLSERVER2000)
- mysql查看所有存储过程,函数,视图,触发器,表《转》
- 查看SQL SERVER 加密存储过程,函数,触发器,视图
- 用Java实现导出SQLServer数据库中所有存储过程,视图,函数和触发器
- 存储过程解密(破解函数,过程,触发器,视图.仅限于SQLSERVER2000)
- mysql查看所有存储过程,函数,视图,触发器,表,分页
- 从已有数据库生成脚本来获得生成数据表、视图、函数、存储过程以及触发器的SQL语句
- 手动 重编译存储过程、SQL语句、函数、触发器、视图
- [MSSQL]查看SQL SERVER 加密存储过程,函数,触发器,视图
- 从 syscomments 取系统存储过程、用户存储过程、视图、函数、触发器等对象的sql定义语句
- 查看SQL SERVER 加密存储过程,函数,触发器,视图
- 查看MySQL所有存储过程、函数、视图、触发器及表
- 转载j9988的一篇破解存储过程,函数,视图,触发器的存储过程
- mysql查看所有存储过程,函数,视图,触发器,表
- 查看SQL SERVER 加密存储过程,函数,触发器,视图
- 存储过程、视图、触发器、函数 解密