存储过程创建语法:
create or replace procedure 存储过程名(param1 in type,param2 out type)
as
变量1 类型(值范围);
变量2 类型(值范围);
Begin
Select count(*) into 变量1 from 表A where列名=param1;
If (判断条件) then
Select 列名 into 变量2 from 表A where列名=param1;
Dbms_output。Put_line(‘打印信息’);
Elsif (判断条件) then
Dbms_output。Put_line(‘打印信息’);
Else
Raise 异常名(NO_DATA_FOUND);
End if;
Exception
When others then
Rollback;
End;
注意事项:
1, 存储过程参数不带取值范围,in表示传入,out表示输出
2, 变量带取值范围,后面接分号
3, 在判断语句前最好先用count(*)函数判断是否存在该条操作记录
4, 用select 。。。into。。。给变量赋值
5, 在代码中抛异常用 raise+异常名
以命名的异常
命名的系统异常 产生原因
ACCESS_INTO_NULL 未定义对象
CASE_NOT_FOUND CASE 中若未包含相应的 WHEN ,并且没有设置
ELSE 时
COLLECTION_IS_NULL 集合元素未初始化
CURSER_ALREADY_OPEN 游标已经打开
DUP_VAL_ON_INDEX 唯一索引对应的列上有重复的值
INVALID_CURSOR 在不合法的游标上进行操作
INVALID_NUMBER 内嵌的 SQL 语句不能将字符转换为数字
NO_DATA_FOUND 使用 select into 未返回行,或应用索引表未初始化的
TOO_MANY_ROWS 执行 select into 时,结果集超过一行
ZERO_DIVIDE 除数为 0
SUBSCRIPT_BEYOND_COUNT 元素下标超过嵌套表或 VARRAY 的最大值
SUBSCRIPT_OUTSIDE_LIMIT 使用嵌套表或 VARRAY 时,将下标指定为负数
VALUE_ERROR 赋值时,变量长度不足以容纳实际数据
LOGIN_DENIED PL/SQL 应用程序连接到 oracle 数据库时,提供了不
正确的用户名或密码
NOT_LOGGED_ON PL/SQL 应用程序在没有连接 oralce 数据库的情况下
访问数据
PROGRAM_ERROR PL/SQL 内部问题,可能需要重装数据字典& pl./SQL
系统包
ROWTYPE_MISMATCH 宿主游标变量与 PL/SQL 游标变量的返回类型不兼容
SELF_IS_NULL 使用对象类型时,在 null 对象上调用对象方法
STORAGE_ERROR 运行 PL/SQL 时,超出内存空间
SYS_INVALID_ID 无效的 ROWID 字符串
TIMEOUT_ON_RESOURCE Oracle 在等待资源时超时
CREATE OR REPLACE PROCEDURE p_insert_t
(v_x in NUMBER,v_msg out varchar2)
IS
temp_id number;
BEGIN
v_msg :='执行成功';
if v_x is null then
v_msg :='执行失败';
return;
end if;
delete from buser where 1=1;
commit;
FOR i IN 1..v_x LOOP
temp_id :=i;
if (i < 5) then
dbms_output.put_line(temp_id);
insert into buser (id, username, nickname, status, createtime)
values(temp_id, to_char(temp_id), to_char(temp_id), 0, sysdate);
else
insert into buser (id, username, nickname, status, createtime)
values('200', to_char(temp_id), to_char(temp_id), '22', sysdate);
end if;
END LOOP;
commit;
execute immediate 'grant create table to cheny';
execute immediate 'create table user_temp(id number,username varchar2(1000))';
execute immediate 'insert into user_temp select id,username from buser';
--'create global temporary table tmp (groupid varchar2(36),groupType integer,groupSendType integer) ON COMMIT PRESERVE ROWS; session级别
--'create global temporary table tmp (groupid varchar2(36),groupType integer,groupSendType integer) on commit delete rows'; 事物级别
commit;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
dbms_output.put_line(sqlcode || sqlerrm);
v_msg :='执行失败' || sqlerrm;
RETURN;
END;
分享到:
相关推荐
下面将详细介绍Oracle procedure的一些关键知识点。 1. **创建存储过程**: 创建存储过程的基本语法如下: ```sql CREATE OR REPLACE PROCEDURE procedure_name (parameter_list) AS declaration_section ...
4. **Oracle Procedure**: 存储过程是Oracle数据库中预编译的SQL和PL/SQL代码块,可以包含一系列的SQL语句和控制结构。它们可以接受参数,执行特定任务,然后返回结果。使用存储过程可以提高性能,减少网络通信,...
在Oracle数据库中,存储过程(Procedure)是核心的编程组件,它允许开发人员编写和存储可重复使用的SQL和PL/SQL代码块。这篇教程将深入探讨Oracle存储过程的概念、创建、调用以及其在数据库管理中的应用。 一、存储...
Oracle Procedure 是 Oracle 数据库中的一个重要概念,它是一种预编译的 SQL 和 PL/SQL 代码块,用于执行特定任务。本文将深入解析 Oracle Procedure 的基本语法,并提供一些实用的示例,帮助理解如何创建、使用和...
Oracle培訓Oracle Procedure﹑Function、Trigger等
### ORACLE 批量更新三种方式比较 在Oracle数据库中,有时我们需要对大量数据进行更新操作,这在很多业务场景中都非常常见。针对这一需求,本文将详细介绍并比较三种常用的批量更新方法:通过PL/SQL循环更新、使用...
### ORACLE中CLOB字段转String类型 在Oracle数据库中,`CLOB`(Character Large Object)是一种用于存储大量文本数据的数据类型。由于其能够存储非常大的文本块(最大可达4GB),因此常被用于存储文章、报告或任何...
标签进一步细化了这个主题:“pb”指PowerBuilder,“oracle procedure”指的是Oracle存储过程,而“存储过程”是数据库管理中常见的概念,它允许将一系列操作封装在一起,形成一个可重用的单元。 压缩包中的文件...
Oracle存储过程是数据库管理系统Oracle中的一个重要特性,它允许开发者编写包含一系列SQL语句和PL/SQL块的程序单元,这些程序单元可以在需要时执行,提高了数据处理的效率和应用程序的性能。在Java开发中,Oracle...
OracleConnection myconnection = new OracleConnection(" Data Source=ORCL;Persist Security Info=True;User ID=SCOTT;Password=tiger;Unicode=True"); myconnection.Open(); string sql = "select * from emp...
oracle procedure trigger function cursor
### Oracle存储过程、函数和包的关键知识点 #### 1. 存储过程和函数的认识 - **定义**:存储过程和函数是特定类型的PL/SQL块,它们被存储在数据库中,作为命名的对象存在。 - **命名存储**:与普通的PL/SQL块不同,...
根据提供的信息,我们可以详细解析如何在Oracle数据库中创建一个包,并在该包内定义一个存储过程来实现分页功能。这种做法通常用于处理大量数据时,以提高查询效率和用户体验。 ### Oracle包与存储过程 #### 一、...
Oracle procedure 存储过程 创建+执行+删除
ORACLE存储过程中定义数组并且判断某值是否在数组中。有例子可執行、 、有例子可執行、
`oracle procedure.chm`是一个帮助文件,通常包含详细的参考信息、示例和教程,供用户学习和查询Oracle存储过程的用法。CHM(Compiled HTML Help)格式是一种微软提供的离线帮助文档格式,用户可以通过搜索和导航来...