首页 > 数据库 > Oracle > Oracle中的双引号
帮朋友写了个删除某用户下所有对象的脚本,反馈说有个函数无法删除,"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/ ,如需转载,请注明出处,否则将追究法律责任。