存储过程

创建过程范例

create or replace procedure pro_kingsql_p1(

p_one in varchar2,--可以传入参数

p_two out varchar2,--可以返回值

p_three in out varchar2)--既可以传入参数,又可以返回值

is

begin

dbms_output.put_line('parameter: '||'p_one: '||p_one ||'p_two: '||p_two  ||',p_three:'||p_three);

end;

/

set serveroutput on

declare

two varchar2(20):='zhuohui';

three varchar2(20):='hong';

begin

pro_kingsql_p1('kingsql',two,three);

end;

/

parameter: p_one: kingsql p_two: ,p_three:hong

PL/SQL procedure successfully completed.

declare

begin

pro_kingsql_p1('kingsql','KINGSQL2','KINGSQL3');

end;

/

pro_kingsql_p1('kingsql','KINGSQL2','KINGSQL3');

*

ERROR at line 3:

ORA-06550: line 3, column 26:

PLS-00363: expression 'KINGSQL2' cannot be used as an assignment target

ORA-06550: line 3, column 37:

PLS-00363: expression 'KINGSQL3' cannot be used as an assignment target

ORA-06550: line 3, column 1:

PL/SQL: Statement ignored

create or replace procedure pro_kingsql_p1(

p_one in varchar2,--可以传入参数

p_two out varchar2,--可以返回值

p_three in out varchar2--既可以传入参数,也可以返回值

)is

two_a varchar2(20):='haha';

begin

p_two:=two_a;--twoa变量赋给p_two参数.

dbms_output.put_line('parameter: '||p_one ||',p_two: '||p_two ||',p_three: '||p_three);

end;

/

~

SQL> set serveroutput on

SQL> declare

2  two varchar2(20):='zhuohui';

3  three varchar2(20):='hong';

4  begin

5  pro_kingsql_p1('kingsql',two,three);

6  end;

7  /

parameter: kingsql,p_two: haha,p_three: hong

PL/SQL procedure successfully completed.

OUT、IN OUT不能设置默认值

create or replace procedure pro_kingsql_p1(

p_one in varchar2,

p_two out varchar2,

p_three in out varchar2 default kingsql3)

is

begin

dbms_output.put_line('parameter: '||'p_one: '||p_one ||'p_two: '||p_two ||',p_three:'||p_three);

end;

/

会报错

过程调用

create or replace procedure pro_kingsql_p2(

v_001 in varchar2,

v_002 out varchar2,

v_003 out varchar2)

is

zhuohui varchar2(100):='zhuohui';

hong varchar2(100):='hong';

begin

v_002:=zhuohui;

v_003:=hong;

dbms_output.put_line(v_001||'tel:13820305037');

pro_kingsql_p1(v_001,v_002,v_003);

end;

/

declare

two varchar2(20):='hehe';

three varchar2(20):='gaga';

begin

pro_kingsql_p2('kingsql',two,three);

end;

/

删除过程

DROP PROCEDURE 过程名

比较存储过程和函数

过程:执行一个PL/SQL语句,在头部不包含RETURN语句,可以返回多个值,不包含RETURN语句

函数:作为表达式的一部分调用,在头部必须包含一个RETURN字句,必须返回一个单个的值,必须包含至少一个RETURN语句

写一个输出工资等级的过程

create or replace procedure pro_emp_02(

v_eno emp.empno%type)

is

v_ename emp.ename%type;

v_sal emp.sal%type;

begin

select ename,sal into v_ename,v_sal from emp where empno=v_eno;

case

when v_sal between 0 and 2000 then

dbms_output.put_line(v_ename||'每个月赚'||v_sal||'小意思');

when v_sal between 2001 and 5000 then

dbms_output.put_line(v_ename||'每个月赚'||v_sal||'中等意思');

when v_sal>5000 then

dbms_output.put_line(v_ename||'每个月赚'||v_sal||'开始有意思');

else

dbms_output.put_line(v_ename||'每个月赚'||v_sal||'小意思');

end case;

end pro_emp_02;

/

execute pro_emp_02(7788);

SCOTT每个月赚3000中等意思

写一个显示年薪的过程

create or replace procedure pro_emp_01(

v_eno in emp.empno%TYPE)

is

v_ename emp.ename%TYPE;

v_sal emp.sal%TYPE;

begin

select ename,sal into v_ename,v_sal from emp where empno=v_eno;

dbms_output.put_line(v_ename||'''s annual salary is'||v_sal*12);

end pro_emp_01;

/

Execute pro_emp_01(7566);

JONES's annual salary is35700

PLSQL过程创建和调用的更多相关文章

  1. Windows下静态库、动态库的创建和调用过程

    静态库和动态库的使用包括两个方面,1是使用已有的库(调用过程),2是编写一个库供别人使用(创建过程).这里不讲述过多的原理,只说明如何编写,以及不正确编写时会遇见的问题. //注:本文先从简单到复杂, ...

  2. QT共享库的创建与调用(初级)(附:UI界面不能被改变的其中一个原因)

    背景: 最近在做的一个项目其中一部分既是实现PC与下位机的USB通信.windows平台下已经完成,现需移植到linux平台下. 在linux系统中,通过一段时间的工作,设备已被配置成hid类(后续再 ...

  3. 在VC中创建并调用DLL

    转自:http://express.ruanko.com/ruanko-express_45/technologyexchange6.html 一.DLL简介 1.什么是DLL? 动态链接库英文为DL ...

  4. PB11.5创建及调用WebService

    我今天做了这个“PB创建及调用WebService”的小作业,下面我来分享一下我的整个实践过程以及我遇到的问题,希望对大家有所帮助,这个小作业是分以下三部来完成的: 一.构建WebService ①创 ...

  5. C#继承关系中【方发表】的创建和调用

    —C#继承关系中[方发表]的创建和调用 Insus.NET实现一个最炫最原创的验证码.你可以从下面的一步一步的演译. 实现一个验证码,需要了解的是,它最基本是随机产生字符串:<在ASP.NET ...

  6. MySQL存储过程的创建及调用

    阅读目录:MySQL存储过程_创建-调用-参数 存储过程:SQL中的“脚本” 1.创建存储过程 2.调用存储过程 3.存储过程体 4.语句块标签 存储过程的参数 1.in:向过程里传参 2.out:过 ...

  7. 基础总结篇之八:创建及调用自己的ContentProvider

    转自:http://blog.csdn.net/wellsoho/article/details/49494141 若不能坚持到底,即使是朽木也不能折断:只要坚持不停地用刀刻,就算是金属玉石也可以雕出 ...

  8. Java 静态static关键字,main函数,对象的初始化过程,对象调用成员,单例模式的设计,静态代码块(6)

    Java 静态static关键字,静态代码块详情参考:static的使用原理讲解http://www.cnblogs.com/itcqx/p/5519464.html main函数: java Mai ...

  9. C/C++中动态链接库的创建和调用

    DLL 有助于共享数据和资源.多个应用程序可同时访问内存中单个DLL 副本的内容.DLL 是一个包含可由多个程序同时使用的代码和数据的库.下面为你介绍C/C++中动态链接库的创建和调用. 动态连接库的 ...

随机推荐

  1. GSAP JS基础教程--认识GSAP JS

    第一次写博文呢,这次写博客是因为应一位同学的要求,写一下GSAP JS的一个小教程.为什么说小呢?因为它实际上就是小,只是一个入门级的小教程.如果你想问:“那你为什么不写详细一点呢?”,我想说,说., ...

  2. Git 学习笔记--1.Git基础操作

    取得项目的Git仓库 有两种方式取得Git项目仓库.第一种是在现存的目录下,通过导入所有文件来创建新的Git仓库.第二种是从已有的Git仓库克隆出一个新的镜像仓库. 在工作目录中初始化新仓库  要对现 ...

  3. adc转换原理

    模数转换器即A/D转换器,或简称ADC,通常是指一个将模拟信号转变为数字信号的电子元件.通常的模数转换器是将一个输入电压信号转换为一个输出的数字信号.由于数字信号本身不具有实际意义,仅仅表示一个相对大 ...

  4. 编写java的时候出现“编码GBK的不可映射字符”

    今天在编写文件的时候,使用 javac ***.java 但是java文件里面会出现一些中文的信息,So:会报错 方法: 加参数-encoding UTF-8 例如:javac -encodig UT ...

  5. iOS富文本组件的实现—DTCoreText源码解析 渲染篇

    本文转载至 http://blog.cnbang.net/tech/2729/ 上一篇介绍了DTCoreText怎样把HTML+CSS解析转换成NSAttributeString,本篇接着看看怎样把N ...

  6. 转:git windows中文目录乱码问题解决

    Git的Windows版本Msysgit对中文的支持不够好 当使用时,会出现以下三种情况的中文乱码: 1.ls不能显示中文目录 解决办法:在git/git-completion.bash中增加一行:  ...

  7. Android学习之AutoCompleteTextView

    AutoCompleteTextView有点类似于EditText和Spinner的混合体.当用户在输入时,如果应用程序的文本输入框中使用了自动完成控件,预输入文本被看作是一个前缀过滤器,与用户当前输 ...

  8. 开机出现checking file system on C怎么办

    开机出现checking file system on C怎么办 | 浏览:16126 | 更新:2018-02-04 13:51 | 标签:开机 百度经验:jingyan.baidu.com 开机出 ...

  9. WEB中会话跟踪[转]

    今天晚上去华工参加睿智融科的笔试,问到web会话跟踪,一脸懵比,这个词听都没听过,回来后百度下,发现其实会话跟踪的内容我基本都了解的~_~ 转自:http://www.cnblogs.com/gaop ...

  10. Delphi应用程序的调试(一)

    集成式调试器是Delphi IDE的一个重要特性.该调试器使用户能方便地设置断点.监视变量.检查对象等等.在运行程序时,使用该调试器能快速查找出程序发生了什么(或未发生什么).一个号的调试器对程序开发 ...