今天一个朋友问我下面这段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. TWS日志查看

    背景:记录下tws的日志查看过程,备忘 1 日志查看过程 根据企业的流水号,在日志中查询企业发送的报文: ps:期间最好将日志所在的行号进行记录,方便定位. 2017032802_2017070700 ...

  2. (转)硬盘分区备忘(主分区,扩展分区和逻辑分区)以及Linux硬盘分区工具parted 介绍

    场景:最近在学习Linux的基础知识,不可避免的设计到Linux的磁盘分区,以前做过总结,但是那种总结就是复制别人的文章,总结完就不想看第二遍,所以很容易就遗忘了!清楚明白的理解分区后,我就可以在自己 ...

  3. 【EntityFramework 6.1.3】个人理解与问题记录

    前言 又是一个炎热夏日的晚上,开着空调听着音乐又开始了我们今天的博文.此文并不是ROM工具哪家强之类的引战贴,只是本文自己的一点看法和见解,望前辈看官有望斧正 声明 本文欢迎转载,原文地址:http: ...

  4. python教程6-2:字符串标识符

    标识符合法性检查. 1.字母或者下划线开始. 2.后面是字母.下划线或者数字. 3.检查长度大于等于1. 4.可以识别关键字. python35 idcheck.py  idcheck.py impo ...

  5. SpringBoot启动流程解析

    写在前面: 由于该系统是底层系统,以微服务形式对外暴露dubbo服务,所以本流程中SpringBoot不基于jetty或者tomcat等容器启动方式发布服务,而是以执行程序方式启动来发布(参考下图ke ...

  6. 说说最近的项目情况吧(OLCS Part1)

    这几天一直在做从04年项目的老代码移植到用portlet spring mvc框架的系统中,由于对业务逻辑的不清楚,代码没有认真的研究,导致各种问题.希望自己长点心吧♥

  7. Vue自定义事件

    前面的话 父组件使用props传递数据给子组件,子组件怎么跟父组件通信呢?这时,Vue的自定义事件就派上用场了.本文将详细介绍Vue自定义事件 事件绑定 每个 Vue 实例都实现了事件接口 (Even ...

  8. kali linux 2.0下搭建DVWA渗透测试演练平台

    DVWA (Dam Vulnerable Web Application)DVWA是用PHP+MySQL编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测试程序.包含了SQL注入.XSS.盲注等常 ...

  9. php面试题汇总一(基础篇附答案)

    一份不错的php面试题,附答案,有准备换工作的同学可以参考一下. 1:使用五种以上方式获取一个文件的扩展名要求:dir/upload.image.jpg,找出 .jpg 或者 jpg ,必须使用PHP ...

  10. M4——GPIO配置

    1.GPIO 简述: 通用输入输出(General Purpose Input Output)的简称,就是芯片引脚可以通过他们输出高电平或者低电平,也可以通过他们读取引脚的电平状态. 以STM32F4 ...