 |
|
 |
 |
|  |
VIEWS是关键字吗
| | | 日期:2008-01-26 点击:1 评论: 0 | | VIEW是Oracle的SQL关键字,同时也是PL/SQL的关键字。这一点没有什么疑问,但是VIEWS也是关键字吗?今天在测试的时候无意间发现了这个小问题。至少从Oracle的官方文档上看,VIEWS既不是SQL的关键字也不是PL/SQL的关键字,那么实际情况呢:SQL... 阅读全文>> |
|  |
调用者权限存储过程的权限特点
| | | 日期:2008-01-26 点击:1 评论: 0 | | 调用者权限存储过程的权限使用上和定义者权限存储过程有所差别。这个差异在于角色是否生效。 对于定义者权限存储过程,角色是无效的,如果需要在存储过程中使用某些权限,那么这些权限必须是直接授权给用户或者PUBLIC的,而不能是通过角色获得的权限... 阅读全文>> |
|  |
调用者权限过程的权限问题
| | | 日期:2008-01-26 点击:4 评论: 0 | | 最近在看expert one on one oracle的时候,突然发现Tom对调用者权限过程的描述,正好是前一阵碰到一个问题的解释。 首先描述一下当时我碰到的问题:我写了一个存储过程,要在其中使用DBMS_METADATA过程获取另一个用户的某对象的定义。SQL CREATE... 阅读全文>> |
|  |
新增对象对调用者权限存储过程的影响
| | | 日期:2008-01-26 点击:2 评论: 0 | | 调用者权限和定义者权限存储过程不同,调用者权限不但存在上一篇文章介绍的问题,还可能导致存储过程执行报错。新建对象也可能导致存储过程的失效:http://yangtingkun.itpub.net/post/468... 阅读全文>> |
|  |
新建对象也可能导致存储过程的失效
| | | 日期:2008-01-26 点击:4 评论: 0 | | 以前一直认为修改、删除对象和回收权限才会导致存储过程的状态变为INVALID,这两天在读TOM的书时突然想到,新建对象也可能导致存储过程的状态发生变化。 测试的例子很简单:SQL CREATE OR REPLACE PROCEDURE P_TEST AS 2 BEGIN 3 FOR I IN (SELECT *... 阅读全文>> |
|  |
将IP地址转化为数值
| | | 日期:2008-01-26 点击:1 评论: 0 | | 看到有人问如何将IP转化为数值,一时手痒就写了个简单的函数。IP地址格式为1.1.1.1,转为为数值的规则为,将每个数值都转化为16进制,然后将4个16进制数连接起来,再转化为10进制。用函数实现:SQL CREATE OR REPLACE FUNCTION F_IPTONUM (P_IPADDRESS... 阅读全文>> |
|  |
UTL_FILE包的简单例子
| | | 日期:2008-01-26 点击:5 评论: 0 | | 开发人员要实现一个自动将表中数据导出到一个csv格式文件的功能。建议他们使用UTL_FILE包加DBMS_JOB实现。最后给他们写了一个简单的UTL_FILE包使用的例子。以前需要使用UTL_FILE包,必须设置utl_file... 阅读全文>> |
|  |
计算个人所得税的函数
| | | 日期:2008-01-26 点击:1 评论: 0 | | 今天在网上看到一个计算个人所得税的小程序。一时手痒,就写了一个Oracle下的函数,实现同样的功能。函数写完,才发现算法实在是很简单,不过既然写了就贴出来吧:SQL CREATE OR REPLACE FUNCTION P_TAX (P_SALARY IN NUMBER, P_START IN NUMBER DEFAULT... 阅读全文>> |
|  |
一个处理操作系统文件属性的小函数
| | | 日期:2008-01-26 点击:3 评论: 0 | | 一个数据库文件系统出现故障,重新后检测坏块,结果发现只是丢失了ORACLE_HOME/bin目录,其他目录都没有问题。由于是测试库,不想重新安装Oracle,于是,直接从其他数据库服务器平台上直接将bin目录ftp过来... 阅读全文>> |
|  |
自定义聚集函数访问远端对象(三)
| | | 日期:2008-01-26 点击:0 评论: 0 | | 这两天碰到一个比较奇怪的现象,如果自定义聚集函数的输入值是通过数据库链从远端获得,则可能会报错。由于情况比较复杂,也不好确定是否是Oracle的bug。自定义聚集函数访问远端对象(一):http://yangtingkun.itpub.net... 阅读全文>> |
|  |
自定义聚集函数访问远端对象(二)
| | | 日期:2008-01-26 点击:0 评论: 0 | | 这两天碰到一个比较奇怪的现象,如果自定义聚集函数的输入值是通过数据库链从远端获得,则可能会报错。由于情况比较复杂,也不好确定是否是Oracle的bug。这篇文章尝试通过不同的方式进行测试,以便找到问题的产生原因,以及解决方法... 阅读全文>> |
|  |
自定义聚集函数访问远端对象(一)
| | | 日期:2008-01-26 点击:1 评论: 0 | | 这两天碰到一个比较奇怪的现象,如果自定义聚集函数的输入值是通过数据库链从远端获得,则可能会报错。由于情况比较复杂,也不好确定是否是Oracle的bug。准备先将问题通过例子展现处理,再下一篇文章再进行具体的分析。首先创建一下环境:SQL CONN... 阅读全文>> |
|  |
RETURNING语句几个小问题
| | | 日期:2008-01-26 点击:3 评论: 0 | | ORACLE的DML语句中可以指定RETURNING语句。RETURNING语句的使用在很多情况下可以简化PL/SQL编程。这里不打算说明RETURNING语句的使用(其实使用起来也很简单,和SELECT INTO语句没有多大区别。),主要打算说明RETURNING语句的几个特点... 阅读全文>> |
|  |
过程执行报错ORA-4068
| | | 日期:2008-01-26 点击:1 评论: 0 | | 今天在运行一个过程是报了一个ORA-4068错误。虽然问题很简单,而且也很容易解决,但是要真正理解的错误产生的原因,还需要对概念理解的比较清晰。下面做一个简单的例子重现错误:SQL CREATE TABLE T AS SELECT * FROM TAB;表已创建。SQL CREATE OR REPLACE... 阅读全文>> |
|  |
10g的MAX、MIN的bug
| | | 日期:2008-01-26 点击:2 评论: 0 | | 今天husthxd兄碰到这样一个问题:http://www.itpub.net/499684.html。看到这个问题,我的第一反应是MAX函数的返回值的问题,应该返回CHAR(6)结果返回VARCHAR2(4000)。SQL CREATE TABLE TEST (ID NUMBER, NAME CHAR(6));表已创建。SQL INSERT INTO TEST... 阅读全文>> |
|  |
编码规范的重要性——一次PLSQL程序问题诊断
| | | 日期:2008-01-26 点击:1 评论: 0 | | 刚接触PL/SQL的时候,看的是一本经典的PL/SQL指南《Oracle 8i PL_SQL高级程序设计》。我现在所掌握的PL/SQL编程知识,有50%以上是从这本书中学来的。而且由于当时完全模仿书中的例子,还养成了比较好的PL/SQL编码风格... 阅读全文>> |
|  |
判断是否数字类型(二)
| | | 日期:2008-01-26 点击:4 评论: 0 | | 经常看到有人提出这样的需求,判断一个字符串的内容是否是数值。于是写了两种两个判断是否属于NUMBER类型的函数。发现上一篇文章中,给出的自定义函数的方法确实了对科学技术法的判断。这里将其补充上。判断是否数字类型:http://yangtingkun.itpub.net/post... 阅读全文>> |
|  |
FOR ALL语法浅析
| | | 日期:2008-01-26 点击:2 评论: 0 | | 同事问了我一个问题,使用FOR ALL和FOR LOOP的区别到底是什么。以前也一直没有深究这个问题,唯一清楚的是FOR ALL是一个批量操作,效率明显比FOR LOOP的方式要高,至于FOR ALL到底是一个SQL语句,还是将多个SQL语句同时提交给ORACLE还真不太清楚... 阅读全文>> |
|  |
判断是否数字类型
| | | 日期:2008-01-26 点击:2 评论: 0 | | 经常看到有人提出这样的需求,判断一个字符串的内容是否是数值。于是写了两种两个判断是否属于NUMBER类型的函数。第一个方法最简单也最直接,利用ORACLE自带的TO_NUMBER函数,只不过增加了异常处理部分,防止非数字类型导致函数异常而中断执行。SQL CREATE... 阅读全文>> |
|  |
FORALL语句的小问题
| | | 日期:2008-01-26 点击:2 评论: 0 | | Oracle提供的批量操作功能FORALL语句,可以批量的执行动态SQL语句,从而有效的提高执行的效率。在编写存储过程的时候,碰到一个和FORALL有关的bug,在这里记录一下。 编写的存储过程大致如下:SQL CREATE OR REPLACE PROCEDURE P_TEST AS 2 TYPE T_TABLE... 阅读全文>> |
|
 | |
|
|