ORA-04043艰难的解决之路
来源:互联网 发布:java 图片上传 base64 编辑:程序博客网 时间:2024/04/30 18:27
前言
做项目在Oracle数据库里创建存储过程时,遇见了一个奇葩的问题:
创建了一个名为:PACK_KC_Check
存储过程,编译的时候,提示
对象 PACK_KC_CHECK 已经删除
删除的时候
无论是PLSQL上手动删
还是调用SQL语句drop procedure PACK_KC_Check;
都提示
删掉 PACK_KC_Check 错误: ORA-04043: 对象 PACK_KC_CHECK 不存在
当时为了赶项目,负责人让先将这个放在一边,重新创建了一个其他名字的存储过程,将就着用了。
项目完成后,仔细分析,终于解决,特此整理成文
提示:
* 本文详细的描述了解决该问题的过程,篇幅比较长,如果急需解决问题请直接跳到尝试3
*
首先要知道
Oracle里,自动将所有的字母做大写处理
解决
该存储过程为:
CREATE OR REPLACE PACKAGE "PACK_KC_Check"astype cur is ref cursor;---====中间的具体存储过程就不详细描述了end PACK_KC_Check;
1.尝试方法1
遇见问题,当然下意识的去搜索一下 ORA-04043,看到很多都说是格式的问题,说删除的时候带上""
就好了
即
drop procedure “PACK_KC_Check”;
结果:尝试之,卒。
2.尝试方法2
2.1.验证
因为删除时一直提示
删掉 PACK_KC_Check 错误: ORA-04043: 对象 PACK_KC_CHECK 不存在
所以肯定要验证一下,到底是不是存在该存储过程,该存储过程到底去哪了
SELECT * FROM USER_PROCEDURES ;
查询全部的存储过程后,发现,该存储过程分明就存在
2.2.反思
能够查询到
该存储过程,但是却提示不存在
肯定是某个环节出错了
仔细对比了一下正常的存储过程与该存储过程的属性
发现该存储过程是INVALID(无效的)
编译都没通过,
2.3修改
CREATE OR REPLACE PACKAGE "PACK_KC_Check"astype cur is ref cursor;end "PACK_KC_Check";
2.4结果:编译能够通过,删除仍然失败
删掉 PACK_KC_Check 错误: ORA-04043: 对象 PACK_KC_CHECK 不存在
3.尝试方法3
解决到现在,有种只在此山中 云深不知处
的无奈
慢慢冷静下来,继续看
删除的提示是:
删掉 PACK_KC_Check 错误: ORA-04043: 对象 PACK_KC_CHECK 不存在
* 前后的大小写不一样!!!!!!!!!! *
创建存储过程时,因为加上了引号,所以大小写敏感,数据库中存储的是
PACK_KC_Check
(有大写有小写),而删除的时候,会自动的将其大写后再删除,当然就不存在了
再次修改
CREATE OR REPLACE PACKAGE "PACK_KC_CHECK"astype cur is ref cursor;end "PACK_KC_CHECK";
删除成功
总结
为避免因字母大小写导致的问题,在编写存储过程或其他有关命名时尽量直接就采用
大写
- ORA-04043艰难的解决之路
- 艰难的blog之路
- 艰难的管理之路
- 艰难的mfc之路
- 艰难的wince7之路
- 客户数据采集的艰难之路
- 我的It之路 很艰难
- 白血病男孩的艰难之路
- 程序员艰难的路
- 程序员艰难的路
- ios 开发艰难之路
- 微点软件的上市之路为何如此艰难
- 艰难的Qt学习之路——简易加法器
- 艰难的编译Chrome之旅
- 转行的艰难之 找实习
- Linux之路为何如此艰难?
- 坚持IT之路,尽管很艰难
- 本命年开始,科研之路起步艰难
- QT学习笔记09QT编程规范
- 【LeetCode】41. First Missing Positive
- 10分钟带你光速入门运维工具之-Puppe
- 敏捷合同VS传统合同
- JavaScript DOM操作
- ORA-04043艰难的解决之路
- Adapter.notifyDataSetChanged()数据改变却不刷新的原因
- Python安装常见问题(1):zipimport.ZipImportError: can't decompress data
- 剑指offer 面试题3:二维数组中的查找
- Android像素(px)与dip
- mysql出现错误“ Every derived table must have its own alias”
- 数字三角形问题
- 字典树
- 关于linux中浏览器无法观看视频(未安装flash导致的错误)!!!!