`

oracle procedure

阅读更多
存储过程创建语法:
       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实例

    下面将详细介绍Oracle procedure的一些关键知识点。 1. **创建存储过程**: 创建存储过程的基本语法如下: ```sql CREATE OR REPLACE PROCEDURE procedure_name (parameter_list) AS declaration_section ...

    C#写的WinForm版执行Oracle Procedure的工具源码

    4. **Oracle Procedure**: 存储过程是Oracle数据库中预编译的SQL和PL/SQL代码块,可以包含一系列的SQL语句和控制结构。它们可以接受参数,执行特定任务,然后返回结果。使用存储过程可以提高性能,减少网络通信,...

    Oracle-procedure.rar_oracle_oracle procedure_oracle 存储过程

    在Oracle数据库中,存储过程(Procedure)是核心的编程组件,它允许开发人员编写和存储可重复使用的SQL和PL/SQL代码块。这篇教程将深入探讨Oracle存储过程的概念、创建、调用以及其在数据库管理中的应用。 一、存储...

    全面解析Oracle Procedure 基本语法

    Oracle Procedure 是 Oracle 数据库中的一个重要概念,它是一种预编译的 SQL 和 PL/SQL 代码块,用于执行特定任务。本文将深入解析 Oracle Procedure 的基本语法,并提供一些实用的示例,帮助理解如何创建、使用和...

    Oracle培訓Procedure﹑Function等简介

    Oracle培訓Oracle Procedure﹑Function、Trigger等

    ORACLE 批量更新三种方式比较

    ### ORACLE 批量更新三种方式比较 在Oracle数据库中,有时我们需要对大量数据进行更新操作,这在很多业务场景中都非常常见。针对这一需求,本文将详细介绍并比较三种常用的批量更新方法:通过PL/SQL循环更新、使用...

    ORACLE中CLOB字段转String类型

    ### ORACLE中CLOB字段转String类型 在Oracle数据库中,`CLOB`(Character Large Object)是一种用于存储大量文本数据的数据类型。由于其能够存储非常大的文本块(最大可达4GB),因此常被用于存储文章、报告或任何...

    pb中执行oracle存储过程脚本

    标签进一步细化了这个主题:“pb”指PowerBuilder,“oracle procedure”指的是Oracle存储过程,而“存储过程”是数据库管理中常见的概念,它允许将一系列操作封装在一起,形成一个可重用的单元。 压缩包中的文件...

    oracle存储过程教程

    Oracle存储过程是数据库管理系统Oracle中的一个重要特性,它允许开发者编写包含一系列SQL语句和PL/SQL块的程序单元,这些程序单元可以在需要时执行,提高了数据处理的效率和应用程序的性能。在Java开发中,Oracle...

    VS2010访问 oracle数据库的例子(EMP表)

    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编程基础

    oracle procedure trigger function cursor

    Oracle存储过程、函数和包

    ### Oracle存储过程、函数和包的关键知识点 #### 1. 存储过程和函数的认识 - **定义**:存储过程和函数是特定类型的PL/SQL块,它们被存储在数据库中,作为命名的对象存在。 - **命名存储**:与普通的PL/SQL块不同,...

    oracle包用存储过程图分页

    根据提供的信息,我们可以详细解析如何在Oracle数据库中创建一个包,并在该包内定义一个存储过程来实现分页功能。这种做法通常用于处理大量数据时,以提高查询效率和用户体验。 ### Oracle包与存储过程 #### 一、...

    Oracle简单存储过程

    Oracle procedure 存储过程 创建+执行+删除

    ORACLE存储过程中定义数组并且判断某值是否在数组中.txt

    ORACLE存储过程中定义数组并且判断某值是否在数组中。有例子可執行、 、有例子可執行、

    oracle存储过程-帮助文档

    `oracle procedure.chm`是一个帮助文件,通常包含详细的参考信息、示例和教程,供用户学习和查询Oracle存储过程的用法。CHM(Compiled HTML Help)格式是一种微软提供的离线帮助文档格式,用户可以通过搜索和导航来...

Global site tag (gtag.js) - Google Analytics