使用集合变量作为输入参数CREATETYPEdeptno_table_typeISTABLEOFNUMBER(2);/CREATETYPEdname_table_typeISTABLEOFVARCHAR2(10);/CREATETYPEloc_table_typeISTABLEOFVARCHAR2(20);/CREATEORREPLACEPROCEDUREadd_department(deptno_tabledeptno_table_type,dname_tabledname_table_type,loc_tableloc_table_type)ISBEGINFORALLiIN1..deptno_table.COUNTINSERTINTOdeptVALUES(deptno_table(i),dname_table(i),loc_table(i));EXCEPTIONWHENDUP_VAL_ON_INDEXTHENRAISE_APPLICATION_ERROR(-20012,'部门号不能重复');END;/DECLAREdeptno_tabledeptno_table_type:=deptno_table_type(60,70,80);dname_tabledname_table_type:=dname_table_type('计划处','质量处','技术处');loc_tableloc_table_type:=loc_table_type('呼和浩特','包头','乌海');BEGINadd_department(deptno_table,dname_table,loc_table);END;/18-18:使用集合变量作为输出参数CREATETYPEename_table_typeISTABLEOFVARCHAR2(10);/CREATETYPEjob_table_typeISTABLEOFVARCHAR2(10);/CREATEORREPLACEPROCEDUREget_emp(dnoNUMBER,ename_tableOUTename_table_type,job_tableOUTjob_table_type)ISBEGINSELECTename,jobBULKCOLLECTINTOename_table,job_tableFROMempWHEREdeptno=dno;EXCEPTIONWHENNO_DATA_FOUNDTHENRAISE_APPLICATION_ERROR(-20010,'该部门不存在');END;/DECLAREename_tableename_table_type;job_tablejob_table_type;BEGINget_emp(&dno,ename_table,job_table);FORiIN1..ename_table.COUNTLOOPdbms_output.put_line('姓名:'||ename_table(i)||',岗位:'||job_table(i));ENDLOOP;END;/
下面是存储过程代码:
declare
except_arrayarray_num:=array_num(90818041);
from_catalogidnumber:=90818040;
to_catalogidnumber:=91469311;
begin
directory_path_change(from_catalogid,to_catalogid,except_array);
end
;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
create or replace procedure directory_path_change(from_catalogId integer ,to_catalogId integer ,except_arrayarray_num) is
tmp_IDNUMBER(19);
catalog_treepathVARCHAR2(768 CHAR );
inumber(10);
isUpdatenumber(1);
cursor directory_cursor is
select id from corp_directorysd where d.catalog_id=from_catalogId;
begin
select treepath into catalog_treepath from corp_catalogs where id=to_catalogId;
savepointp1;
open directory_cursor;
loop
fetch directory_cursor into
tmp_ID;
exit when directory_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE( '=============ID:' );
DBMS_OUTPUT.PUT_LINE(tmp_ID);
i:=1;
isUpdate:=0;
for i in 1..except_array. count Loop
ifexcept_array(i)=tmp_ID then
isUpdate:=1;
end if;
end loop;
ifisUpdate=1 then
update corp_directorysd set d.catalog_id=to_catalogId,d.treepath=(catalog_treepath||d.id|| '#' ) where d.id=tmp_ID;
end if;
commit ;
end loop;
close directory_cursor;
exception
when others then
dbms_output.put_line(sqlerrm);
rollback to savepointp1;
end directory_path_change;
|
分享到:
相关推荐
在实际的业务场景中,有时我们需要调用数据库中的存储过程来获取或处理数据,本篇将详细介绍如何在润乾报表中调用Oracle存储过程。 首先,我们要在Oracle数据库中创建存储过程。以下是一个简单的存储过程示例,名为...
### Oracle存储过程超详细使用手册 #### 一、创建存储过程 在Oracle中,存储过程是一种数据库对象,它由一组SQL语句和可选的PL/SQL代码组成,用于完成特定的功能。创建存储过程的基本语法如下: ```sql CREATE OR...
"Oracle 存储过程详细使用手册" Oracle 存储过程是数据库中的一种重要组件,它可以实现复杂的业务逻辑和数据处理。本手册将详细介绍 Oracle 存储过程的使用方法和相关知识点。 1. 创建存储过程 创建存储过程的...
Oracle 存储过程超详细使用手册 Oracle 存储过程是一种强大的数据库工具,它可以将复杂的业务逻辑封装在数据库中,从而提高数据的安全性和一致性。本手册将详细介绍 Oracle 存储过程的使用方法,涵盖了创建存储过程...
### Oracle存储过程及触发器总结 #### 一、Oracle 存储过程概述 在Oracle数据库中,存储过程是一种预先编译好的SQL代码块,它可以接受输入参数、返回单个值或多个值,并能够调用其他存储过程。存储过程在数据库...
### Oracle存储过程学习经典知识点详解 #### 一、创建存储过程 存储过程是数据库中预编译的一段SQL代码,可以提高程序的可维护性和执行效率。在Oracle中,可以通过`CREATE OR REPLACE PROCEDURE`语句来创建存储过程...
### Oracle存储过程、函数语法详解 #### 一、概述 Oracle数据库系统因其高效的数据处理能力,在企业级应用中被广泛采用。存储过程和函数作为Oracle数据库的重要组成部分,可以帮助开发人员编写更加灵活、高效的...
总结来说,调用Oracle存储过程涉及定义包含`IN`和`OUT`参数的存储过程,并在应用程序中通过适当的语法调用它。这种方式使得我们可以利用存储过程的强大功能来处理复杂的数据操作,同时保持应用程序代码的简洁性和可...
Oracle 存储过程实例 Oracle 存储过程是一种强大的数据库对象,可以执行复杂的数据操作和业务逻辑。下面是一个基本的 Oracle 存储过程实例,适合初学者学习 Oracle。 创建存储过程 创建存储过程的基本语法为: ``...
### Oracle存储过程详解 #### PL/SQL简介与特性 PL/SQL(Procedural Language for SQL)是Oracle数据库中一种强大的编程语言,它结合了SQL的强数据操作能力与传统编程语言的过程化处理功能,使得数据库操作更加...
Oracle存储过程是数据库管理系统中的一个重要概念,它是一种预编译的SQL和PL/SQL代码集合,用于执行特定的数据库操作。存储过程可以被看作是数据库中的可重用的、有名字的函数,允许数据库管理员和开发人员创建复杂...
Oracle 存储过程详解 Oracle 存储过程是 Oracle 数据库中的一种强大工具,可以实现复杂的业务逻辑和数据处理。下面是 Oracle 存储过程的一些重要知识点总结。 1. 创建存储过程 创建存储过程的基本语法为: ```sql...
Oracle存储过程是数据库管理系统中的一种重要工具,它允许开发者编写一系列复杂的SQL和PL/SQL语句,形成可重用的代码块。以下是对标题和描述中提到的Oracle存储过程相关知识点的详细说明: 1. 创建存储过程:使用`...
### Oracle存储过程超详细使用手册 #### 创建存储过程 在Oracle数据库中,存储过程是一种预编译的对象,它能够接收参数、执行SQL语句并返回结果。存储过程可以帮助提高应用程序性能,减少网络流量,并增强安全性。...