(一)使用输入参数
需求:在emp_copy中添加一条记录,empno为已有empno的最大值+1,ename不能为空且长度必须大于0,deptno为60。
创建存储过程:
create or replace procedure insert_emp(emp_name in varchar2, dept_no in number) as
begin
declare max_empno number;
begin
if(emp_name is null or length(emp_name) = 0) then
return;
end if;
if(dept_no != 60) then
return;
end if;
select max(empno) into max_empno from emp_copy;
insert into emp_copy(empno, ename, deptno) values(max_empno + 1, emp_name, dept_no);
end;
end insert_emp;
/
Procedure created.
调用存储过程并验证:
(1)
SQL>execute insert_emp('Li Si', 60);
PL/SQL procedure successfully completed.
SQL>
col empno format 99999;
col ename format a15;
col deptno format 99999;
select empno, ename, deptno from emp_copy where deptno = 60;
EMPNO ENAME DEPTNO
------ --------------- ------
7981 Li Si 60
(2)
SQL> execute insert_emp('', 6);
PL/SQL procedure successfully completed.
SQL> select empno, ename, deptno from emp_copy where deptno = 6;
SQL>
(二)使用输出参数
需求:在上个需求的基础上,要分别统计表emp_copy插入数据前后的记录数。
创建存储过程:
create or replace procedure insert_emp(emp_name in varchar2, dept_no in number, original_count out number, current_count out number) as
begin
declare max_empno number;
begin
if(emp_name is null or length(emp_name) = 0) then
return;
end if;
if(dept_no != 60) then
return;
end if;
select count(1) into original_count from emp_copy;
select max(empno) into max_empno from emp_copy;
insert into emp_copy(empno, ename, deptno) values(max_empno + 1, emp_name, dept_no);
select count(1) into current_count from emp_copy;
end;
end insert_emp;
/
Procedure created.
调用存储过程:
declare count1 number;
count2 number;
begin
insert_emp('Wang Wu', 60, count1, count2);
dbms_output.put_line('Original count of table emp_copy is ' || count1);
dbms_output.put_line('Current count of table emp_copy is ' || count2);
end;
/
Original count of table emp_copy is 15
Current count of table emp_copy is 16
PL/SQL procedure successfully completed.
(三)使用输入输出参数
in out参数综合了上述两种参数类型,既向过程体传值,也被赋值而传到过程体外。in out参数既可以用作输入也可以用作输出。
需求:实现两数交换。
创建存储过程:
create or replace procedure swap(value1 in out number, value2 in out number) as
begin
value1 := value1 + value2;
value2 := value1 - value2;
value1 := value1 - value2;
end swap;
/
Procedure created.
调用存储过程:
declare a number := 22;
b number := 33;
begin
dbms_output.put_line('Before swap: a = ' || a || ', b = ' || b);
swap(a, b);
dbms_output.put_line('After swap: a = ' || a || ', b = ' || b);
end;
/
Before swap: a = 22, b = 33
After swap: a = 33, b = 22
PL/SQL procedure successfully completed
- 浏览: 499778 次
- 性别:
- 来自: 沈阳
文章分类
- 全部博客 (437)
- Windows设置 (2)
- oracle数据库 (39)
- bug--jsp (4)
- j2se (13)
- js (40)
- bug-tomcat不能启动程序 (1)
- Hibernate (29)
- eclipse (20)
- java (65)
- 设计模式 (6)
- bug (18)
- PL/SQL (11)
- 前台 (5)
- 杂谈 (25)
- UML (1)
- jdbc编程 (2)
- 技术调研 (1)
- 数据通信 (2)
- ios (1)
- servlet自学笔记 (10)
- tomcat (9)
- SQL学习笔记 (6)
- java工具 (1)
- 数据库设计 (4)
- javascript (10)
- jsp (11)
- struts (17)
- ajax (7)
- linix/Unix (6)
- 资源 (3)
- spring (14)
- 算法 (5)
- 计算机网络 (2)
- http (5)
- c++ (2)
- web应用 (3)
- jvm (5)
- java中的字符编码 (14)
- java代码库 (2)
- classloader (1)
- 读书笔记 (1)
- c (1)
- 开源软件 (1)
- svn (1)
- AOP (1)
- java序列化 (1)
- 多线程 (4)
- The legendary programmers (1)
- Apache http Server (1)
- html tag (3)
- struts1.X学习笔记 (5)
- buffalo (1)
- 自己收藏 (0)
- TOEFL(IBT) (1)
- 网络翻墙 (0)
- 编译原理 (1)
- 书籍推荐 (1)
- css (10)
- javaee环境搭建资料 (1)
- 开源工具 (1)
- 美国生活 (1)
- spring自学 (3)
- log4j (3)
- 算法与数据结构 (5)
- 病毒,插件处理大全 (1)
- flex (2)
- webservice (1)
- git (7)
- cs (1)
- html (4)
- javaee (6)
- 开车 (0)
- springmvc (3)
- 互联网架构 (2)
- intellij idea (18)
- maven (15)
- mongodb (2)
- nginx (1)
- react (3)
- java基础例子 (2)
- springboot (2)
- 培训 (5)
- mysql (3)
- 数据库 (3)
- 生活 (2)
- intellij (3)
- linux (2)
- os (3)
最新评论
-
潇洒天涯:
[color=blue][color=cyan] ...
oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值 -
hekai1990:
受教了..
oracle中的varchar2
发表评论
-
【转】数据库事务的四大特性以及事务的隔离级别
2017-10-12 23:09 535本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说 ... -
oracle连接plsql
2015-07-27 16:02 590oracle查看本机服务名 在cmd命令窗口: ... -
【转】oracle查询:取出每个分组中的第一条记录
2015-05-27 17:26 3453排序后取第一条记录 select * from (sel ... -
【转】java 调用存储过程 实例
2015-05-06 14:55 492共4个 一.只有输入参数没有返回结果的存储过程 二. 有 ... -
【转】Oracle导出表(即DMP文件)的两种方法
2015-05-04 20:00 864方法一:利用PL/SQL Developer工具导出: ... -
【转】Oracle创建表空间、创建用户以及授权
2015-05-04 20:00 553Oracle安装完后,其中有一个缺省的数据库,除了这个缺省 ... -
【转】ORA-12519错误解决方案
2015-05-04 19:54 992系统正常运行一个月后,上线第一天出现了下列错误,想了很久没有 ... -
【转】查看修改表空间sql语句
2015-05-01 16:26 551--所有表ower, 表名,表空间名 select ... -
【转】oracle存储过程、声明变量、for循环
2015-04-30 22:20 1272oracle存储过程、声明变量、for循环 1、创建存储 ... -
【转】Oracle数据库备份之exp/imp用法
2015-04-30 22:16 566------------------------------ ... -
【转】 oracle单行函数
2015-04-22 10:17 737虽然各个数据库都是支持SQL语句的,但是每一个数据库也有每一 ... -
【转】Oracle中group by用法
2015-04-21 18:22 566在select 语句中可以使用group by 子句将行划分 ... -
【转】Oracle中sign函数和decode函数的使用
2015-04-20 15:09 622Oracle中sign函数和decode函数的使用 ... -
[转]Oracle字符串拼接的方法
2015-04-09 14:43 2165本文转自:http://www.blogjava.net/l ... -
【转】oracle 10g怎么导入dmp文件,在windows下
2015-03-06 16:19 13开始-->运行-->输入cmd或是wind ... -
【转】Oracle新建用户、角色,授权,建表空间
2015-03-03 17:03 17oracle数据库的权限系统分为系统权限与对象权限。系统权限 ... -
【转】Oracle数据库-建库、建表空间,建用户
2015-03-02 16:54 21Oracle安装完后,其中有一个缺省的数据库,除了这个缺省 ... -
oracle ASCII字符串<==>16进制串
2013-01-19 07:42 1582sql中可以直接插入16进制字串表示的数据到blob表中。如 ... -
【转】Oracle中Decode()函数使用技巧
2012-11-19 14:36 939decode()函数是ORACLE PL/SQL是 ... -
配置PL/SQL的快捷方法
2012-11-13 16:50 227一般是:首先你要安装有oracle客户端,然后用Net ...
相关推荐
本文将深入探讨Oracle带输入输出参数的存储过程,以及如何结合SQL分页功能来优化查询。 首先,存储过程中的输入参数(IN)用于传递到存储过程中的数据,这些参数不可在存储过程中修改。例如,`p_id IN varchar2(150...
在帆软报表的设计过程中,当用户尝试调用一个Oracle数据库中的存储过程时,可能会遇到一个问题:即使存储过程本身并未声明任何输入或输出参数,设计界面仍会提示需要提供一个名为"storeParameter1"的参数。...
本文将详细介绍如何使用C#语言连接Oracle数据库,并演示如何调用Oracle存储过程,特别是带有输出参数的情况。这些知识点对于初学者来说尤为重要。 #### 前置知识 1. **C#基础**:理解C#的基本语法和概念。 2. **...
本文实例讲述了C#调用存储过程的方法。分享给大家供大家参考,具体如下: CREATE PROCEDURE [dbo].[GetNameById] @studentid varchar(8), @studentname nvarchar(50) OUTPUT AS BEGIN SELECT @studentname=...
除了基本的存储过程外,还可以创建带有输出参数的存储过程。例如,下面的`TESTB`存储过程将从表`TESTTB`中查询数据,并通过输出参数返回结果: ```sql CREATE OR REPLACE PROCEDURE TESTB( PARA1 IN VARCHAR2, ...
在Java编程中,与Oracle数据库交互是常见的任务之一,而调用Oracle存储过程可以实现复杂的业务逻辑。本文将深入探讨如何在Java中调用Oracle存储过程,并输出自定义对象或二维表,以此提升数据处理效率。 首先,我们...
能不能写个动态的业务,只输入存储过程名称,自动获取存储过程参数,并且参数的数据从前台传递过来,这个就通用了。只写一个通用方法,就可以调用所有的存储过程。只根据输入不同的存储过程名称、参数内容,自动调用...
接着,我们设置输入参数和输出参数,并执行存储过程。最后,我们获取输出参数的值并打印出来。 接下来,我们创建了一个名为 TESTPACKAGE 的包,包中包含了一个名为 TESTC 的存储过程。存储过程 TESTC 有一个输出...
存储过程可以带有参数,分为输入参数(IN)、输出参数(OUT)和输入输出参数(IN OUT)。调用存储过程通常使用`CALL`语句,但某些情况下(如只有输出参数的情况),需要在PL/SQL块中调用。 - 无参数过程: ```sql ...
然后,创建OracleParameter对象来处理存储过程的输入和输出参数。 ```vb Dim cmd As New OracleCommand("get_max_user_id", conn) cmd.CommandType = CommandType.StoredProcedure ' 创建输出参数,注意Oracle的...
综上所述,以上示例覆盖了Oracle存储过程和函数的基本创建方法,包括无参数、带参数、默认参数、输出参数以及输入输出参数等不同情况。这些知识对于理解如何有效地使用Oracle数据库中的存储过程和函数至关重要。
2. OUT 参数:作为输出参数,需要注意,当一个参数被指定为 OUT 类型时,就算在调用存储过程之前对该参数进行了赋值,在存储过程中可以重新赋值。 3. IN OUT 参数:既可以作为输入参数,也可以作为输出参数。 三、...
在VB中调用Oracle存储过程是一项常见的任务,特别是在开发基于Oracle数据库的应用程序时。ADO(ActiveX Data Objects)是微软提供的一个数据访问接口,它允许程序员通过VB等编程语言与数据库进行交互。以下是对VB...
5. **处理结果**:如果存储过程有返回值或者输出参数,可以使用`registerOutParameter`和`getObject`方法获取。 `源码`标签表明我们将看到实际的代码示例,而`工具`标签暗示可能涉及到Spring框架的某些工具类。在这...
存储过程可以带有参数,参数可以是输入参数(IN)或输出参数(OUT)。参数的类型可以是Oracle中的任何合法类型。 变量的声明 在存储过程中,可以声明变量,以便存储过程的执行。变量的声明格式为: 变量名 类型...
在上述代码中,我们使用了CallableStatement来处理带有输入和输出参数的存储过程。注意,对于输出参数,需要先注册其类型,然后在执行后通过`getXXX`方法获取值。 为了确保代码的可读性和可维护性,建议将这些调用...
Oracle 定时执行存储过程 oracle 是一个功能强大的关系型数据库管理系统,可以执行各种复杂的任务,其中包括定时执行存储过程。定时执行存储过程可以让 oracle 自动执行某些操作,而不需要人工干预。下面我们将详细...
存储过程可以带有参数,参数分为输入(in)、输出(out)和输入/输出(in/out)三种类型。以下是一些参数过程的实例: 1. **无参数过程**: ```sql create or replace procedure stu_proc as pname student.sname%...