Oracle万能存储过程

create or replace procedure proc_data_check is

--定义变量

V_LOCK_ID            INTEGER;

v_lockhandle         VARCHAR(128);

V_RELEASE_ID         INTEGER;

--定义出错异常信息编码

v_error_code VARCHAR2(10) := ‘‘;

--定义错误异常描述信息

v_error_message VARCHAR2(1000) := ‘‘;

cursor check_orgs is

select org_code, org_name from check_org;

begin

DBMS_LOCK.ALLOCATE_UNIQUE(‘PROC_DATA_CHECK‘, v_lockhandle, 86400);

V_LOCK_ID := DBMS_LOCK.REQUEST(v_lockhandle, DBMS_LOCK.X_MODE, 0, FALSE);

if (V_LOCK_ID = 0) then

for check_org in check_orgs loop

null;

end loop;

V_RELEASE_ID := dbms_lock.release(v_lockhandle);

COMMIT;

end if;

commit;

EXCEPTION

WHEN OTHERS THEN

V_RELEASE_ID := dbms_lock.release(v_lockhandle);

--得到异常编码

V_ERROR_CODE := SQLCODE;

--得到异常描述信息

V_ERROR_MESSAGE := SQLERRM;

--将异常信息维护到异常表中

end proc_data_check;

 
时间: 2024-10-23 02:52:06

Oracle万能存储过程的相关文章

oracle分页存储过程

oracle分页存储过程: CREATE OR REPLACE PROCEDURE FGK.prc_page (p_tableName in varchar2, --表名 p_strWhere in varchar2, --查询条件 p_orderColumn in varchar2, --排序的列 p_orderStyle in varchar2, --排序方式 p_curPage in out Number, --当前页 p_pageSize in out Number, --每页显示记录条

Oracle中存储过程传入表名学习

Oracle中存储过程传入表名: 一.动态清除该表的数据 create or replace procedure p_deletetable(i_tableName in varchar2) as --定义变量存放动态的SQL语句 dynamic_drop_sql varchar2(500); begin dynamic_drop_sql :=  'DELETE  FROM ' || i_tableName ; --执行动态SQL语句 execute immediate dynamic_drop

oracle的存储过程语法(转)

1.ORA-00942: table or view does not exist 指的你要操作的表尚未存在,需要先create出来先. 2.ORA-00922: missing or invalid option 指的是有语法错误.遗漏了分号什么的 3.Warning: Procedure created with compilation errors 比如  create or replace procedure p_test_pro1 is     begin       insert i

懵懂oracle之存储过程

/* 作为一个oracle界和厨师界的生手,笔者想给大家分享讨论下存储过程的知识,因为在我接触的通信行业中,存储过程的使用还是占据了一小块的地位. 存储过程是什么?不得不拿下百度词条的解释来:"存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中, 经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程是数据库中的一个重要对象." 其实就似我们经过一系列的

懵懂oracle之存储过程2

上篇<懵懂oracle之存储过程>已经给大家介绍了很多关于开发存储过程相关的基础知识,笔者尽最大的努力总结了所有接触到的关于存储过程的知识,分享给大家和大家一起学习进步.本篇文章既是完成上篇文章中未来得及总结的关于存储过程的调用.测试等知识的汇总分享,也是对上篇文章的存储过程的一个调试改错过程(由于知识的局限性和书写时的疏忽等,之前的存储过程有误之处难免,正在不断更改中,如果能得到大家的指正将使这个工作进行地更快更好,助人为快乐之本!). 下面步入正题,介绍本篇知识汇总和分享: 一.存储过程的

用NHibernate调用Oracle的存储过程

摘要 NHibernate2.1.1版终于可以调用Oracle的存储过程了,不过必须使用NHibernate.Driver.OracleDataClientDriver驱动(Oracle.DataAccess.dll),但这会导致hbm2ddl.keywords抛异常,所以也不是很完美. NHibernate调用Oracle的存储过程的方法 首先,在Oracle10g里面创建一个简单的存储过程,它的第一个参数必须是SYS_REFCURSOR类型的. 存储过程create or replace p

oracle的存储过程

用了两年Oracle还没写过存储过程,真是十分惭愧,从今天开始学习Oracle存储过程,完全零起点,争取每日一篇学习笔记,可能开始认识的不全面甚至有错误,但坚持下来一定会有收获. 1. 建立一个存储过程 create or replace PROCEDURE firstPro IS BEGIN DBMS_OUTPUT.PUT_LINE('Hello World!'); END; 其中IS关键字替换为AS关键字结果不会出现任何变化,大多认为他们是等同的,但也有一种说法解释为:一般PACKAGE 或

java下实现调用oracle的存储过程和函数

目录(?)[-] 创建表STOCK_PRICES 插入测试数据 建立一个返回游标 创建和存储过程P_GET_PRICE 创建函数 JAVA调用存储过程返回结果集 开发JAVA调用函数返回结果集 在oracle下创建一个test的账户,然后 1.创建表:STOCK_PRICES [cpp] view plaincopy --创建表格 CREATE TABLE STOCK_PRICES( RIC VARCHAR(6) PRIMARY KEY, PRICE NUMBER(7,2), UPDATED D

oracle 分页存储过程

--创建表declare num number; begin select count(1) into num from user_tables where table_name='SRCT';   --判断当前要创建的表在数据库中是否存在.if num>0 then execute immediate 'drop table '||'SRCT'; --表名要大写end if; execute immediate 'CREATE TABLE SRCT(    SN  char(11),   XM