ORACLE 的游标、存储过程、触发器以及表的连接查询
2009-03-13 22:37
459 查看
1 表的连接查询
连接有相等连接、不等连接、自连接和外连接。但比较常说的是内连接和外连接。
相等连接示例:select a.name , b.number from a ,b where a.id=b.id
不等连接示例:select a.name ,b.number from a,b where a.id between b.losal and b.hisal
自连接示例:select t1.name ,t2.manager from emp t1,emp t2 where t1.managername=t2.name
外连接示例: select d.dname,e.ename from dept d,emp e where d.deptno=e.deptno(+) and e.deptno(+) =10
当使用“+”操作符执行外连接时,如果在where 子句中包含多个条件则必须在所有条件中都包含该操作符,它只能用于列而不能用在表达示上,且不能和OR和IN操作符一起使用。
为了简化连接查询,使得连接查询更加直观更容易写,SQL1999标准为连接查询提供了新语法,如:
select table.columnname,table2.columnname from table1
[cross join table2] |[Natural join table2]|
[join table using (columnname)]|
[join table2 on (table1.columnname=table2.columnname)]|
[left|right|full outer join table2]
2 游标的使用
游标分显式和隐含,后者用于处理单行SELECT into和DML语句,前者用于处理SELECT语句返回的多行数据。
游标的使用分为:
定义游标
打开游标
提取数据
关闭游标
example:
declare
cursor emp_cursor is
select ename,job,sal from emp where dep=&dno;---&dno is the input parameter
v_ename emp.ename%type;
v_job emp.job%type;
v_sal emp.sal%type;
begin
open emp_cursor;
loop
fetch emp_cursor int v_ename,v_job,v_sal;
exit when emp_cursor%notfound;
dbms_output.put_line('name'||v_ename||'job'||v_job||'salary'||v_sal);
end loop;
close emp_cursor;
end;
/
3存储过程
Create or replace procedure divide(num1 in out number,num2 in out number) is
v1 number;
v2 number;
begin
v1 :=TRUNC(num1/num2);
v2 :=MOD(num1,num2);
num1 := v1;
num2 := v2;
end;
/
调用存储过程:
delcare
num1 number;
num2 number;
num1 := 3;
num2 := 5;
exec divide(num1,num2)
4触发器
触发器包括语句触发器和行触发器两种类型。
语句触发器语法:
create or replace trigger trigger_name
before|after event1 [or event2 or event 3] on table_name
SQL block;
create or replace trigger tr_sec_emp
before insert or update or delete on emp
begin
....
end;
/
行触发器语法:
create or replace trigger trigger_name
before or after event1 or event2 or event3
on table_name
for each row [when condition]
sql block;
连接有相等连接、不等连接、自连接和外连接。但比较常说的是内连接和外连接。
相等连接示例:select a.name , b.number from a ,b where a.id=b.id
不等连接示例:select a.name ,b.number from a,b where a.id between b.losal and b.hisal
自连接示例:select t1.name ,t2.manager from emp t1,emp t2 where t1.managername=t2.name
外连接示例: select d.dname,e.ename from dept d,emp e where d.deptno=e.deptno(+) and e.deptno(+) =10
当使用“+”操作符执行外连接时,如果在where 子句中包含多个条件则必须在所有条件中都包含该操作符,它只能用于列而不能用在表达示上,且不能和OR和IN操作符一起使用。
为了简化连接查询,使得连接查询更加直观更容易写,SQL1999标准为连接查询提供了新语法,如:
select table.columnname,table2.columnname from table1
[cross join table2] |[Natural join table2]|
[join table using (columnname)]|
[join table2 on (table1.columnname=table2.columnname)]|
[left|right|full outer join table2]
2 游标的使用
游标分显式和隐含,后者用于处理单行SELECT into和DML语句,前者用于处理SELECT语句返回的多行数据。
游标的使用分为:
定义游标
打开游标
提取数据
关闭游标
example:
declare
cursor emp_cursor is
select ename,job,sal from emp where dep=&dno;---&dno is the input parameter
v_ename emp.ename%type;
v_job emp.job%type;
v_sal emp.sal%type;
begin
open emp_cursor;
loop
fetch emp_cursor int v_ename,v_job,v_sal;
exit when emp_cursor%notfound;
dbms_output.put_line('name'||v_ename||'job'||v_job||'salary'||v_sal);
end loop;
close emp_cursor;
end;
/
3存储过程
Create or replace procedure divide(num1 in out number,num2 in out number) is
v1 number;
v2 number;
begin
v1 :=TRUNC(num1/num2);
v2 :=MOD(num1,num2);
num1 := v1;
num2 := v2;
end;
/
调用存储过程:
delcare
num1 number;
num2 number;
num1 := 3;
num2 := 5;
exec divide(num1,num2)
4触发器
触发器包括语句触发器和行触发器两种类型。
语句触发器语法:
create or replace trigger trigger_name
before|after event1 [or event2 or event 3] on table_name
SQL block;
create or replace trigger tr_sec_emp
before insert or update or delete on emp
begin
....
end;
/
行触发器语法:
create or replace trigger trigger_name
before or after event1 or event2 or event3
on table_name
for each row [when condition]
sql block;
相关文章推荐
- oracle中存储过程,存储函数,触发器,游标,索引,事务以及锁的概念,作用
- 14.数据库oracle必学,其他最好了解一种以上(mysql,sql server,access==) oracle:视图,索引,存储过程,触发器,游标,包,常用函数
- sql触发器和存储过程,索引,事务,游标,视图以及子查询等不同的参数、前后触等
- oracle(sql)基础篇系列(五)——PLSQL、游标、存储过程、触发器
- 游标、例外、存储过程、存储函数、java调用存储过程、触发器(Oracle之二)
- oracle查询优化,存储过程select表循环插入另一个表,以及索引重建
- ORACLE PL/SQL语法应用:游标,存储过程,触发器,函数
- oracle中的游标,例外,存储过程,存储函数和触发器
- 关于oracle的函数,存储过程,触发器,序列,视图,左右连接一些的应用 带案例
- 关于oracle的函数,存储过程,触发器,序列,视图,左右连接一些的应用 带案例
- Num44 oracle(子查询两道题:PLSQL,光标,例外,存储过程,存储函数,触发器,)
- oracle中创建存储过程,以及存储过程中调用游标
- Oracle 建用户、库、表、约束、序列、触发器、以及连接Ecplise(自整理)
- oracle编程 if, for , while, loop, 存储过程,触发器,游标演示
- 游标、例外、存储过程、存储函数、java调用存储过程、触发器(Oracle之二)
- 两张图解读Oracle 数据库的 union all、union、intersect、minus以及各种连接查询。
- Oracle03——游标、异常、存储过程、存储函数、触发器和Java代码访问Oracle对象
- ORACLE语法-包(package)、存储过程(procedure)、游标(cursor)以及java对Result结果集的处理
- oracle 建表 造数据 存储过程 创建数据库的远程连接 以及一列的多行合并
- 查询SQLServer2005中某个数据库中的表结构、索引、视图、存储过程、触发器以及自定义函数