分享
 
 
 

oracle毛病(二)

王朝oracle·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

接第一篇:

11. PL/SQL的用户们, 看看下面:

创建一个没带参数的procedure:

create or replace procedure proc_name as

i number;

begin

...

end proc_name;

创建一个带参数的procedure:

create or replace procedure proc_name(arg1,...) as

i number;

begin

...

end proc_name;

你很习惯用declare来声明吗? 不行, 这里不行, 你必需听我的, 用as

创建一个触发器:

create or replace trigger tri_name before insert on tname for each

row

declare

i number;

begin

..

end;

因为这是触发器, 所以它要用declare来声明变量, 尽管触发器用的也是PL/

SQL的语法. 但我们是为了区别于其它类型的存储过程, 为了让用户觉得

ORACLE高深莫测一点.

怎么就一个end;不是end tri_name吗? 是的, procedure和function是这样

设计的, 但这样可以让用户觉得更难用一点么!

(sqlplus下)你调用一个不带参数的procedure:

call proc_name();

(sqlplus下)你调用一个不带参数的procedure:

call proc_name(arg1, arg2);

是的, 它不是可选的, 它必需如此, 定义一个没有参数的procedure就是不

要空的()号, 但调用它的时侯就是要, 定义一个有参数的procedure当然也要.

function的情况与这个也一样.

你调用一个function:

ret_val := func_name();

什么? 你不需要ret_val, 不行, 这是强买强卖, 不要不行. 否则我不干活!

而且, 哼哼, 我给出的错误信息保证你看不懂.

你要玩更高级的设计方法, 用上包了:

create or replace package pack_name as

....

end pack_name;

是的, 这只是包的声明.

要想定义这个包, 你还得:

create or replace package body pack_name as

procedure proc_name is

--你不是说用as吗? 是的, 但是这里as已经被上一条语句用了, 呶! 你

也看到了. 用is有什么不好?

end proc_name

function func_name is

...

end func_name

end pack_name;

12. 看看出错信息, 来自SQLPLUS的, 来自Pro*C预编译器的, 来自其它工具如

imp, exp, sqllda的. 说不准你也别误导呀.

13. 疲惫不堪的Pro*C程序员们:

在函数foo中你已经声明了

EXEC SQL WHENEVER SQLERROR GOTO sql_err;

在另一个函数bar里你只想默默地使用

EXEC SQL WHENEVER SQLERROR CONTINUE;

但你没特别声明, Pro*C的预编译器会告诉你, 它在函数bar中找不到sql_err

标号!!! 它可以跨函数使用标号. 它也敢自称是一个预处理器跟编译器沾沾

边, 刚才用陈桥五笔敲出来的处理器三个字恰好跟处理品是同样的键码, 我看

叫处理品倒是名符其实.

14. DDL语句的用户们:

alter table tname add(col1 type...);

alter table tname modify(col1 type...);

alter table tname drop column(col1);

为何非要在drop里多出来一个column?

15. 命名

user_cons_columns;

user_constraints;

user_rollback_segs;

它真的要把segment统统缩写为segs吗? 把constraints缩写为cons? 把

columns缩写为cols? 不, ORACLE的程序员们想怎么样就怎么样. 他们是觉得

单词的全称太长了吗? 不见得, desc dba_users;看一下

看看INITIAL_RSRC_CONSUMER_GROUP字段, 看看temporary_tablespace字段.

再来看看一下create table:

create table tname (col1 type,...) storage(initial .. next ..

minextents .. maxextents ..) ...;

desc user_tables;

inital_extent

next_extent

minextents

maxextents

不要问他们为什么有的用单数有的用复数, 因为他们是ORACLE. 他们想这样.

dba_tables中owner

dba_sequences中叫sequence_owner

user_tab_columns是关于一张表中列信息的, _tab_columns

user_cons_columns是关于表中字段的约束信息的, _cons_columns

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有