ITPub博客

首页 > 数据库 > Oracle > Oracle中的双引号

Oracle中的双引号

原创 Oracle 作者:Groundsel 时间:2008-07-01 11:22:37 0 删除 编辑

帮朋友写了个删除某用户下所有对象的脚本,反馈说有个函数无法删除,"DROP FUNCTION COMM.func_CURRENCYBALANCE;",寻思不可能啊,哪里还有删不掉的道理,报错对象不存在。这就怪了,对象名都是从Dba_Objects中取得的,还有不存在的道理。细看了一下那语句,发现了蹊跷之处,照理说,从Dba_Objects中取得的对象名应该都是大写的才是,这条删除语句居然有小写,遂查看该函数的创建脚本,没什么异常,只是创建对象的时候在对象名上多了双引号,而且对象名含有小写字母。

双引号的作用,如果创建对象的时候,对象名、字段名加双引号,则Oracle就会区分大小写,否则Oracl都默认大写。

本地测试如下:
Create Function "fn_Test"
As
Begin
NULL;
End;

SQL> Select a.owner,a.object_name,a.object_type From dba_objects a Where Upper(a.Object_Name) = Upper('fn_Test');

OWNER OBJECT_NAME OBJECT_TYPE
------------- ---------------- ------------------
TEST_USER Fn_Test FUNCTION

发现Dba_Objects中这里与普通对象不一样,区分了大小写。

SQL> Drop Function fn_Test;

Drop Function fn_Test

ORA-04043: 对象 FN_TEST 不存在

SQL> Drop Function "fn_Test";

Function dropped

删除对象的时候,同样加上双引号就可以了。

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/62592/viewspace-1006431/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    13
  • 访问量
    45044