PLSQL过程创建和调用
存储过程
创建过程范例
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过程创建和调用的更多相关文章
- Windows下静态库、动态库的创建和调用过程
静态库和动态库的使用包括两个方面,1是使用已有的库(调用过程),2是编写一个库供别人使用(创建过程).这里不讲述过多的原理,只说明如何编写,以及不正确编写时会遇见的问题. //注:本文先从简单到复杂, ...
- QT共享库的创建与调用(初级)(附:UI界面不能被改变的其中一个原因)
背景: 最近在做的一个项目其中一部分既是实现PC与下位机的USB通信.windows平台下已经完成,现需移植到linux平台下. 在linux系统中,通过一段时间的工作,设备已被配置成hid类(后续再 ...
- 在VC中创建并调用DLL
转自:http://express.ruanko.com/ruanko-express_45/technologyexchange6.html 一.DLL简介 1.什么是DLL? 动态链接库英文为DL ...
- PB11.5创建及调用WebService
我今天做了这个“PB创建及调用WebService”的小作业,下面我来分享一下我的整个实践过程以及我遇到的问题,希望对大家有所帮助,这个小作业是分以下三部来完成的: 一.构建WebService ①创 ...
- C#继承关系中【方发表】的创建和调用
—C#继承关系中[方发表]的创建和调用 Insus.NET实现一个最炫最原创的验证码.你可以从下面的一步一步的演译. 实现一个验证码,需要了解的是,它最基本是随机产生字符串:<在ASP.NET ...
- MySQL存储过程的创建及调用
阅读目录:MySQL存储过程_创建-调用-参数 存储过程:SQL中的“脚本” 1.创建存储过程 2.调用存储过程 3.存储过程体 4.语句块标签 存储过程的参数 1.in:向过程里传参 2.out:过 ...
- 基础总结篇之八:创建及调用自己的ContentProvider
转自:http://blog.csdn.net/wellsoho/article/details/49494141 若不能坚持到底,即使是朽木也不能折断:只要坚持不停地用刀刻,就算是金属玉石也可以雕出 ...
- Java 静态static关键字,main函数,对象的初始化过程,对象调用成员,单例模式的设计,静态代码块(6)
Java 静态static关键字,静态代码块详情参考:static的使用原理讲解http://www.cnblogs.com/itcqx/p/5519464.html main函数: java Mai ...
- C/C++中动态链接库的创建和调用
DLL 有助于共享数据和资源.多个应用程序可同时访问内存中单个DLL 副本的内容.DLL 是一个包含可由多个程序同时使用的代码和数据的库.下面为你介绍C/C++中动态链接库的创建和调用. 动态连接库的 ...
随机推荐
- Splash autoload() 方法
autoload() 方法可以设置每个页面访问时自动加载的对象,比如自动加载 JavaScript 代码,自动加载 Ajax 代码等等 注意此方法只负责加载 JavaScript/Ajax 代码,不执 ...
- pip导出安装包及批量安装
python导出安装包及版本 pip freeze > requirements.txt 批量安装pip install -r requirements.txt
- thinkjs中修改默认主键
报错信息: { Error: ER_BAD_FIELD_ERROR: Unknown column 'a_role.id' in 'field list' 还原场景: a_role这张表没有自增的id ...
- React Native(十)——TextInput一点小结
11.24(后续的道路会更加漫长,一点一点总结上去吧~): 从昨天开始接触Mac,实在让自己有点“奔溃”的赶脚……老大说,“不要紧,多接触接触就好了.” 于是,我就开始了跟Mac死磕到底的准备……就先 ...
- windows下nodejs与coffeeScript环境搭建
[本文档摘抄自网上资料] 安装NodeJS和CoffeeScript方法 首先安装Node(因为nodeJs是服务器端javascript运行环境),到http://nodejs.org/下载对应格式 ...
- struts.xml文件中配置tiles.xml
Apache Tiles是一个JavaEE应用的页面布局框架.Tiles框架提供了一种模板机制,可以为某一类页面定义一个通用的模板,该模板定义了页面的整体布局.布局由可以复用的多个块组成,每个页面可以 ...
- c++ malloc与free
今天看STL内存配置器的时候,第一级配置器就是直接用malloc.free来管理内存. 而free和malloc都只需要传入或传出一个指针就能分配和释放内存了. 编译器是如何知道,这个指针指向的空间的 ...
- Esper学习之三:进程模型
之前对Esper所能处理的事件结构进行了概述,并结合了例子进行讲解,不清楚的同学请看Esper学习之二:事件类型.今天主要为大家解释一下Esper是怎么处理事件的,即Esper的进程模型. 1.Upd ...
- StarUML2 建模工具全平台破解及license验证简要分析
破解方法:找到安装目录下的文件:LicenseManagerDomain.js阅读得知,改软件用rsa加密用户信息,换行为用户信息的分隔符修改以下代码,然后打开软件点击菜单栏中的帮助->输入li ...
- Android 本地tomcat服务器接收处理手机上传的数据之案例演示
上一篇:Android 本地tomcat服务器接收处理手机上传的数据之环境搭建 本篇基于上一篇搭建的服务器端环境,具体介绍Android真机上传数据到tomcat服务器的交互过程 场景:A ...