1. oracle 存储过程语法和注意点
语法:
create or replace procedure sp_etl_text (meg out varchar2) is
id number; ----存储过程内定义number参数
name varchar2(20);----存储过程内定义varchar2 参数
cursor hld is ----cursor:为游标
select * from class_name;
begin
for cld in(select count(1) as num from dual) loop ----for循环
if num > 0 then ----if判断
continue;
else
-- insert/update/select 操作
end if;
end loop;
commit; ----提交
exception
when others then
meg := SQLERRM;
rollback; ----异常回滚
end sp_etl_text;
注意点:
- 如果for内存在update 操作建议在update 后直接commit; 否则会出现异常。
- 存储过程可以实现同数据库不同表空间内数据传递,还可以实现不同服务器之间的oracle 数据库的数据传递 ,但是需要注意的就是在不同服务器之间的表结构上不要有colb 类型的字段。
2. oracle 数据库视图
语法:
create or replace view view_text as
----后面跟select 语句即可
3. oracle 数据库函数方法
语法:
create or replace function func_text(a in varchar2 , b in varchar2) return type_text pipelined
Is
....
注意点:
.参数有IN、OUT、IN OUT三种类型;IN代表需要输入的参数,OUT代表要返回的参数,IN OUT代表即是输入参数也是返回参数。
2.return 返回类型
4. 查看进程
sql如下:
select concat('alter system kill session ''',
concat(concat(concat(s.sid,','),s.serial#),''';'))
from v$locked_object lo, dba_objects ao,
v$session s where ao.object_id = lo.object_id
and session_id = s.sid;
查看锁表名称SQL:
select sess.sid,
sess.serial#,
lo.oracle_username,
lo.os_user_name,
ao.object_name as 被锁表名,
lo.locked_mode
from v$locked_object lo,
dba_objects ao,
v$session sess
where ao.object_id = lo.object_id and lo.session_id = sess.sid;