【oracle】oracle经典sql,exception,database link纠错

1111-01 oracle经典sql,exception,database link纠错

1.给表table_a扩展2个字段:studsex varchar2(4) 和 studage integer。
alter table table_a
add ( studsex varchar2(4),studage integer );

2.建立一个视图v_table,要求v_table是table_a和table_b的并集,当字段studid,studname,depart一致时,而字段studscore不一致时,以table_a的学分字段值为准。
create or replace view v_table as
select a.studid,a.studname,a.depart,a.studscore from table_a a
union all
select b.studid,b.studname,b.depart,b.studscore from table_b b
where not exists (select 1 from table_a aa where aa.studid=b.studid,aa.studname=b.studname,aa.depart=b.depart);

3.根据studid找出table_b中不存在table_a的数据。
select b.studid,b.studname,b.depart,b.studscore from table_b b where not exists (select 1 from table_a a where a.studid = b.studid);

4.几种sql的效率
set autotrace on;

--写法2 Plan Hash Value:1630949702
select a.studid from tanle_a a
minus
select b.studid from table_b b;

--写法2 Plan Hash Value:4195831724
select a.studid from tanle_a a
where not exists (
select 1 from table_b b where b.studid = a.studid);

--写法3 Plan Hash Value:
select a.studid from tanle_a a
where a.studif not in (
select b.studid from table_b b);

select least( 1630949702, 4195831724 , 4195831724 ) from dual;

——字符集
SIMPLEFIED CHINESE_CHINA
AMERICAN_AMERICA

AL32UTF8
ZHS16GBK

——CAP Theorem
一致性 Consistency
可用性 Availability
分区容忍性Partition Tolerance
CAP原理的意思是,一个分布式系统不能同时满足一致性,可用性和分区容错性这三个需要,最多只能同时满足两个。

事务的ACID特性:
Atomic 原子性
Consistent 一致性
Isolation 隔离性
Durable 持久性

——set autotrace 查看autotrace的选项值有哪些
set auto[trace] {off | on |trace[only]} [exp[plain]] [stat[istics]]

——oracle修改表数据
select t*,t.rowid from <table> t;
select t* from <table> t for update;

——绑定变量 variable 与 define
ORACLR绑定变量用法总结
http://wenku.baidu.com/view/4ca502ea6f1aff00bed51eed.html?from=search

——oracle 数据类型 —— 3种集合类型
index-by表:不存储在数据库中,下标连续
varray:存储在数据库中,下标连续
嵌套表:存储在数据库中

——Oracle 异常 :exception
1.预定义内部异常:ORA错误码已经与异常名称绑定
no_data_found
too_many_rows
dup_val_on_index
zero_divide
case_not_found
storage_error
value_error
cursor_already_open
timeout_on_resource
等 共21个
【例子1:自动抛出】
set serveroutput on;
declare
v_name t_stu.name%type;
begin
select name into v_name from t_stu where serial_no > 5;
dbms_output.put_line('name='||v_name);
exception
when too_many_rows then
dbms_output.put_line('查询返回了过多的行');
end;
/

【例子1:手动抛出】
set serveroutput on;
declare
--v_name varchar2(30);
begin
--select name into v_name from t_stu where id < 1;
--dbms_output.put_line('v_name='||v_name);
raise no_data_found; --手动抛出预定义的内部异常
exception
when no_data_found then
dbms_output.put_out('no_data_found');
when others then
dbms_output.put_out('other');
end;
/

2.未预定义内部异常:没有异常名称的ORA错误码
--将ORA错误码与异常名称绑定 语法
pragma exception_init(<exception>,<sqlcode>);
【例子】ORA-00001 表示 违反唯一约束
set serveroutput on;
declare
uq_exception exception;
pragma exception_init(uq_exception,-1);
begin
insert into t_stu(id,name) values(1,'scott');
insert into t_stu(id,name) values(1,'scott');
commit;
exception
when uq_exception then
rollback;
dbms_output.put_line('违反唯一约束条件:sqlcode='||sqlcode||',sqlerrm='||substr(sqlerrm,1,200));
when others then
rollback;
dbms_output.put_line('sqlcode='||sqlcode||',sqlerrm='||substr(sqlerrm,1,200));
end;
/

3.自定义异常:需要编程者自己定义ORA错误码(即异常发生的条件),并与异常名称绑定。
【例子】
绑定 自定义ORA错误码 与 自定义异常
抛出异常:oracle存储过程 raise_application_error
语法:
raise_application_error(error_number,message[,true|false])
参数 error_message:Oracle错误码范围[-20000,-20999]
参数 message:错误信息是文本字符串,最多为2048字节(即2kb)
参数 true|false:true表示 添加错误堆(error_stack);false表示 覆盖错误堆。默认为false。

declare
my_exception exception;
pragma exception_init(my_exception,-20001);
message varchar2(4000);
errmsg varchar2(200);
begin
message := 'my_exception occured!';
raise_application_error(-20001,message,true); --手动抛出自定义错误码
exception
when my_exception then
errmsg := substr(sqlerrm,1,200);
dbms_output.put_line(sqlcode||',||errmsg);
when others then
dbms_output.put_line('other exception occured!');
end;
/

说明:
异常发生后,跳转到异常处理部分;异常处理后,程序不会返回到异常发生处的代码,即异常发生处以下的代码不会被执行。

调试存储过程
1.PL/SQL Developer
用于 创建,编译 的调试
2.sql语句插入日志表
用于 过程的逻辑调试
3.命令 show errors
用于 创建,编译,调用 的调试
/* plsql编译警告*/
类型(3种)
severe:检查 可能出现的不可预料错误结果
performance:检查 可能引起的 性能问题
informational:检查 子程序中死代码
all:检查 所有警告

参数 plsql_warnings
1)作用:使得数据库在编译子程序时发出警告信息
2)语法:
alter system|session|procedure <prc_name> set|compile plsql_warnings = 'enable|disable:severe|performance|informational|all';

使用 命名 show errors 查看具体的警告。

——oracle 的update语句
Oracle用一个表的列更新另一个表对应的记录
http://wenku.baidu.com/view/fb67b28f680203d8ce2f2483.html?from=search

——oracle partition补充
需求:
c1 number(12) 表示分种
c2 integer 数值总是[1,288]
在c1建立适当 分区,在 c2 建立适当 子分区。
--range-list
create table t_part_tab(
c1 number(12), --分种
c2 integer, --[1,288]
c3 varchar2(100)
) partition by range(c1) subpartition by list(c2)
subpartition template(
subpartition sp001 values(1),
subpartition sp002 values(2),
……
)
(
partition p20150101 values less than (201501012460),
partition p20150102 values less than (201501022460),
……
);

user_part_tables
user_tab_partitions
user_tab_subpartitions

select * from t_part_tab partition(p20150101);
select * from t_part_tab subpartition(p20150101_sp001);

——database link
grant create [public] database link to <user>;
grant drop database link to <user>; --否则只有dba用户(system, sys)才能删除 全局dblink

创建方式1:指定ip,port,SID
create [public] database link <dblink_name> connect to <user> identified by <pwd>
using '
(DESCRIPTION=
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.137.150.243)(PORT = 1521)
)
(CONNECT_DATA = (SERVER_NAME = inomc)
)
)
)
';

创建方式2:指定TNS name
create [public] database link <dblink_name> connect to <user> identified by <pwd>
using '<tnsname>'; --<tnsname> 实在服务器端 $ORACLE_HOME/network/admin/tnsnames.ora文件中配置了

select * from <table>@<dblink>;
create synonym <synonym> for <table>@<dblink>;

1.创建
public和非public,普通用户都需要授权;DBA用户(system,sys)都无需授权。
2.删除
非public:无需授权,拥有者用户,dba用户 都可以删除。
public:默认只有dba用户才有权限删除,普通用户需要授权。
3.使用
非public:仅 拥有者用户,dba用户 可以访问。
public:同实例的所有用户都可以访问。

posted on 2018-04-05 11:58 绿Z 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/greenZ/p/8721822.html

【oracle】oracle经典sql,exception,database link纠错相关推荐

  1. [转载]oracle常用经典SQL查询

    原文地址:oracle常用经典SQL查询作者:来者 oracle常用经典SQL查询 1.查看表空间的名称及大小  select t.tablespace_name, round(sum(bytes/( ...

  2. oracle存储过程和触发器结合database link的实例

    业务背景 先上图 完成车辆档案信息的统一管理 dblink的创建 在基础平台数据库上创建链接2.0系统的dblink select * from user_sys_privs where privil ...

  3. oracle数据库元数据SQL查询

    oracle数据库经典SQL查询 1.查看表空间的名称及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size fro ...

  4. Oracle -- DBA常用SQL

    Oracle DBA常用SQL 监控SQL 1.监控事例的等待: select event,sum(decode(wait_time,0,0,1)) prev, sum(decode(wait_tim ...

  5. oracle 01031 dblink,通过修改基表(link$)让非public dblink变为public

    有些朋友创建了一个非public的dblink,现在该数据库的其他用户需要去使用该dblink,在正常情况下无访问权限,需要重新建一个dblink,或者将原dblink修改为public.但是由于忘记 ...

  6. mbk文件导入到oracle,Oracle基于物化视图的远程数据复制

    物化视图简介: 远程表复制功能:可以借助数据库链接(dblink),在远程数据库中建立一个本地表的副本,用该方式实现表的定时同步.物化视图存储基于远程表的数据,也可以称为快照. 加速查询功能:物化视图 ...

  7. 修改数据库参数oracle,Oracle 修改数据库基本参数

    Oracle 通过ALTER SYSTEM语句修改数据库参数,其语法: ALTER SYSTEM SET = scope=[ memory | spfile | both ] [sid=] SCOPE ...

  8. 建立dblink(database link)

    database linke是建立一个数据库到另一个数据库的路径的对象,通过database link可以允许查询远程表,我理解可以算作一种分布式数据库的用法. database link是单向连接, ...

  9. oracle database link mysql_oracle database link使用说明

    oracle database link使用说明 作用: 将多个oracle数据库逻辑上看成一个数据库,也就是说在一个数据库中可以操作另一个数据库中的对象. 简易语法: CREATE [PUBLIC] ...

最新文章

  1. XML 特殊字符处理和 CDATA
  2. 43.6% mAP! 阿里巴巴提出:用于一阶段目标检测的半锚式检测器
  3. vue element 表格使用fixed固定列后切换菜单时错位问题
  4. 据说一般人轻易做不了技术支撑…
  5. 数据平台、大数据平台、数据中台……傻傻分不清?这次终于有人讲明白了!
  6. java中Object.equals()简单用法
  7. springMVC学习(7)-springMVC校验
  8. python中的分支语句
  9. poj 3897 Maze Stretching 二分+A*搜索
  10. Android全局代理软件ProxyDroid和TransProxy源码分享
  11. PyQt5快速入门教程4-QtDesigner设计登录界面
  12. Excel数据透视表如何创建?
  13. PM_29 实施条例、合同法、著作权法
  14. 计算机专业学生的学期规划,大学生大一下学期规划
  15. AprilTag中的apriltag.c文件
  16. 炫 音乐可视化 html5 在线,HTML5打造的炫酷本地音乐播放器-喵喵Player
  17. ar虚拟现实电子沙盘软件制作
  18. 树莓派4B之超声波传感器模块(python3)
  19. Python PIL.Image之制作GIF图片
  20. 解决:用电脑在B站看视频声音太小的问题

热门文章

  1. C++里如何使用功能键(F1、F2·····)进行操纵?
  2. 机器人产业一定有美好未来
  3. CreateEvent(NULL,TRUE,FALSE,NULL);的解释
  4. matlab电话拨号音的合成与识别代码,实验报告 电话拨号音的合成与识别
  5. token、cookie是什么
  6. 利用oracle执行系统命令,利用oracle存储过程执行操作系统命令(转)
  7. 怎么查看电脑配置参数linux,linux下查看电脑配置
  8. tomca7.0 mysql配置连接池_tomcat7.0+mysql连接池配置
  9. 华硕飞行堡垒开启虚拟化
  10. 005_JDK的Date类对Comparable接口的实现