今天一个朋友问我下面这段sql语句的问题,我发现了他竟然把程序员的编程思想带入了oracle,虽然是错误的,但也是很经典的错误啊。

create or replace package p_view_param  is
function set_param(num VARCHAR2) return VARCHAR2;
function get_param return VARCHAR2;
end p_view_param; CREATE or replace package body p_view_param is
paramValue VARCHAR2;
-- Param
function set_param(num VARCHAR2) return VARCHAR2 is
begin
paramValue:=num;
--dbms_output.put_line('num'||num);
return num;
end; function get_param return VARCHAR2 is
begin
dbms_output.put_line('paramValue'||paramValue);
return paramValue;
end;
END p_view_param; BEGIN
SELECT p_view_param.set_param('sss')AS temp FROM dual;
END;

执行时发现错误:

这段sql主要两个问题:

1.参数变量名尽量不要num这些特殊意义的单词;

2.包里面的方法是独立的个体,包只是根据相关功能把函数和存储过程封装在一起罢了,而函数之间是独立的,不存在共享变量之类的。如果确实需要就设计为参数传递即可。

3.创建包和创建包体之间分开,不要一起创建。否则创建包的时候会把包体带进去。

修正后的sql如下:

create or replace package p_view_param  is
function set_param(paramVal VARCHAR2) return VARCHAR2;
function get_param(paramVal VARCHAR2) return VARCHAR2; end p_view_param; create or replace package body p_view_param is -- Param
function set_param(paramVal VARCHAR2) return VARCHAR2 is
paramValue VARCHAR2(200);
begin
paramValue:=paramVal;
return paramValue;
end; function get_param(paramVal VARCHAR2) return VARCHAR2 is
begin
--dbms_output.put_line('paramValue'||paramValue);
return paramVal;
end; END p_view_param;
SELECT p_view_param.set_param('sss') as temp FROM dual;
SELECT p_view_param.get_param(p_view_param.set_param('sss')) as temp FROM dual;

ORA-06575:程序包或函数处于无效状态的更多相关文章

  1. ORA-06575: 程序包或函数 NO_VM_DROP_PROC 处于无效状态

    SQL> drop user aaa ;   drop user aaa   ORA-00604: 递归 SQL 级别 1 出现错误 ORA-06575: 程序包或函数 NO_VM_DROP_P ...

  2. R--基本统计分析方法(包及函数)

    摘要:目前经典的统计学分析方法主要有回归分析,Logistic回归,决策树,支持向量机,聚类分析,关联分析,主成分分析,对应分析,因子分析等,那么对于这些经典的分析方法在R中的使用主要有那些程序包及函 ...

  3. Oracle编程入门经典 第11章 过程、函数和程序包

    目录 11.1          优势和利益... 1 11.2          过程... 1 11.2.1       语法... 2 11.2.2       建立或者替换... 2 11.2 ...

  4. Oracle学习笔记十二 子程序(存储过程、自定函数)和程序包

    子程序 子程序:命名的 PL/SQL 块,编译并存储在数据库中.   子程序的各个部分: 1.声明部分 2.可执行部分 3.异常处理部分(可选) 子程序的分类: 1.过程 - 执行某些操作 2.函数 ...

  5. ORA-04044: 此处不允许过程, 函数, 程序包或类型和

    用Orale代码建表时,出现 SQL> comment on column SCORE.cno 2 is '学号(外键)';comment on column SCORE.cno is '学号( ...

  6. 添加Chrome插件时出现“程序包无效”等问题的解决办法

    相较之各大浏览器,我最喜欢的便是Chrome了,不只因为Chrome搜索,也因为Google Chrome强大的插件功能. 而这一切的东风,就是"谷歌访问助手". 谷歌访问助手的下 ...

  7. 解决chrome插件安装时出现的“程序包无效”问题信息:程序包无效。

    https://blog.csdn.net/bluexuemei/article/details/35213117 2014-06-27 09:00:51 bluexuemei 阅读数 14374更多 ...

  8. Chrome安装crx文件的插件时出现“程序包无效”

    有趣的事,Python永远不会缺席! 如需转发,请注明出处:小婷儿的python   https://www.cnblogs.com/xxtalhr/p/11043453.html 链接:https: ...

  9. 谷歌浏览器添加插件时显示程序包无效:"CRX_HEADER_INVALID" 解决办法

    今天在添加谷歌插件的时候,却发现谷歌浏览器显示 程序包无效:"CRX_HEADER_INVALID",现整理解决方法如下: 下图是下载好的 .crx 结尾的插件. 将插件的后缀名改 ...

随机推荐

  1. Entity Framework Core 批处理语句

    在Entity Framework Core (EF Core)有许多新的功能,最令人期待的功能之一就是批处理语句.那么批处理语句是什么呢?批处理语句意味着它不会为每个插入/更新/删除语句发送单独的请 ...

  2. Linux项目自动部署

    场景:linux中自动部署项目在工作中经常遇到,快速高效的部署项目能够大幅提高工作效率.现在将项目部署的过程记录下来,以供参考,其中用到的知识点现在还有很多不很清楚,后面要好好琢磨琢磨! 1 项目部署 ...

  3. java迭代器浅析

    简介 迭代器是遍历容器的一种常用方法,它屏蔽了容器的实现细节,无需暴露数据结构内部,就可以对容器进行遍历,迭代器本身也是一种设计模式,迭代是一种特殊的遍历方式 Iterator 在java中,迭代器接 ...

  4. Web Animations API (JS动画利器)

    原文地址:→传送门 写在前面 之前学习了CSS animation/setTimeout/setInterval/requestAnimationFrame等,这些都可以用在某种场景下的小动画,也可以 ...

  5. MySQL、Oracle数据库之操作系统版本选择

    玩了快五年的Oracle,期间接触的操作系统大都是linux和aix,其中linux大部分为5.8的红帽子以及centos,oracle可以在上边运行稳定且需要安装其他与oracle相关的rpm包都是 ...

  6. python===基础,修改idle的输入风格

    http://blog.csdn.net/aq_cainiao_aq/article/details/51701861

  7. python——模块和包 需要注意的地方

    一 模块 1.import import module: 将执行文件(module)的目录路径插入到sys.path的第一个位置 执行时: 1.创建新的名称空间 2.执行被调用的模块 第二次调用,不会 ...

  8. linux下利用mentohust校园拨号上网小记

    mentohust下载地址 :http://code.google.com/p/mentohust/downloads/list 安装就不多说了,我是在kali系统下使用的,经测试只有32为的可以使用 ...

  9. java微信公众平台开发

    微信公众平台的开发,总体说来也是简单的,就是先大概看下微信公众平台接口文档. 请先大概浏览一下API手册,我们会发现,推送给微信服务器的数据有两种:xml的形式,和json的形式. 那么什么时候是XM ...

  10. 大端(Big Endian)与小端(Little Endian)

    1. 你从哪里来?端模式(Endian)的这个词出自Jonathan Swift书写的<格列佛游记>.这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big ...