前几天编写一个存储过程,需要访问远程数据库的字段,于是建立一个dbLink并建了同义词: CREATE PUBLIC DATABASE LINK orcl@dbc CONNECT TO orcl IDENTIFIED BY orcl USING 'orcl'; CREATE SYNONYM mtb FOR mytable@orcl@dbc: 这里之所以用orcl@bdc为dblink的名称是为了设置global_names=true. 然后新建一个存储过程调用该同义词: v_result mtb…
create procedure sp_name() begin ……… end 比如: create procedure pro_showdbs() show datebase; end //用exec调用存储过程. 一个带参数的存储过程.SQL> CREATE OR REPLACE PROCEDURE HelloWorld1 (2 p_user_name VARCHAR23 ) AS4 BEGIN5 dbms_output.put_line('Hello ' || p_user_name |…
本文标签:Oracle存储过程 我们都知道在Oracle数据库的实际应用的过程中,我们经常把相关的业务处理逻辑,放在Oracle存储过程中,客户端以通过ADO来进行相关的调用  .而有些相关的业务逻辑处理量大并且复杂  . 使客户端调用存储过程后,长时间没有反应,也不知Oracle存储过程运行状态, 本文讲述如何在ORACLE通过任务和管道的应用,异步调用存储过程的方法  .  基本原理 1.使用DBMS_JOB包将主处理存储过程作为任务提交到任务队列中 2.主处理存储过程在运行过程中通过DBM…
Oracle数据库中调用Java类开发存储过程.函数的方法 时间:2014年12月24日  浏览:5538次 oracle数据库的开发非常灵活,不仅支持最基本的SQL,而且还提供了独有的PL/SQL,除此之外,还可以用时下最流行的编程语言Java来做开发.随着对oracle的了解越来越多,越来越禁不住oracle的诱惑,oracle技术真的是一门很有趣的学问.之前,我在博客中总结了挺多有关SQL.PL/SQL的,但是对于oracle数据库中Java类的调用却没有总结,也是因为之前不太会,这会儿总…
原文链接:http://www.jb51.net/article/20160.htm 实际项目当中经常需要在一个存储过程中调用另一个存储过程返回的游标,本文列举了两种情况讲述具体的操作方法. 第一种情况是返回的游标是某个具体的表或视图的数据,如: CREATE OR REPLACE PROCEDURE P_TESTA ( PRESULT OUT SYS_REFCURSOR ) AS BEGIN OPEN PRESULT FOR SELECT * FROM USERS; END P_TESTA;…
存储过程中调用存储过程 create or replace package body PF_Role_Pack is procedure sp_GetPage_Role(pageSize_ in number, --每页大小 pageIndex_ in number, --数据页数,从1开始 RoleNname_ nvarchar2, IsSys_ char, IsUsed_ char, numCount_ out number, --总记录数 MYRECORD_ out MYRECORDTYP…
Oracle存储过程中异常的捕捉和处理 CREATE OR REPLACE Procedure Proc_error_process ( v_IN in Varchar2, v_OUT Out Varchar2) AUTHID CURRENT_USER AS --声明异常 some_kinds_of_err EXCEPTION; -- Exception to indicate an error condition v_ErrorCode NUMBER; -- Variable to hold…
注:本文来源于 <  java 实现往oracle存储过程中传递array数组类型的参数  >最近项目中遇到通过往存储过程传递数组参数的问题, 浪费了N多个小时,终于有点头绪. 具体的代码就不写上了,因为项目中存储过程的调用方法全部是封装好的(好像现在都这样,都姓3层,嘿嘿)  原理: 1.一维数组 A.单纯的一维数组的话,直接建立一个table类型就可以  TYPE TYPE_VARCHAR AS TABLE OF VARCHAR2(200); 2.多维数组 A.多维数组就要稍加修改了,如二…
oracle存储过程递归调用,如果where子句使用的是传入的参数, 在以后的递归调用中参数就是第一次调用的参数值,解决办法是定义变量,使用自定义的变量问题可以解决.…
存储过程中调用webservice其实是在数据库中利用系统函数调用OLE. 1.查找webservice api 可得到MSSOAP.SoapClient. 2.查找API 接口可得到mssoapinit 方法. 3.查找数据库中执行OLE函数sp_OACreate.sp_OAMethod.sp_OADestroy. 到这里基本就完成了,下面是完整的存储过程. --set SoapClient to be work sp_configure 'Ole Automation Procedures'…
ORACLE存储过程中%TYPE和%ROWTYPE的区别 在存储过程中%TYPE和%ROWTYPE常用来在PL/SQL中定义变量 因为 t_emp emp%rowtype ;这个语句的意思是 定义一个变量t_emp使其与EMP表具有一样的数据类型. 也就是说EMP表有哪里数据类型的字段,那么这个t_EMP变量也就能够存储什么类型的数据,而且大小范围也是一样的.(如VARCHAR2(20)) (一)使用%TYPE PL/SQL中的变量用来存储在数据库表中的数据,所以变量和表中的列应该有相同的类型,…
注:本文来源于: <  Oracle存储过程中跳出循环的写法   > Oracle存储过程中跳出循环的写法 记录exit和return的用法 1:exit用来跳出循环 loop IF V_KBP IS NULL THEN EXIT; END IF; end loop; 2:return跳出存储过程 loop IF V_KBP IS NULL THEN return; END IF; end loop; 3:跳出loop 一次循环 oracle 11g已提供continue;      orac…
介绍 一个老朋友计划开发一个应用,基于 .NET 和 Socket,但需要在存储过程中调用 Web 服务. 在这篇文章中我们将分享这个应用的经验,讲述如何在存储过程中调用 Web 服务,并传递参数. Step 1 首先我们在 Visual Studio 中创建一个 Web 服务项目: Step 2 接下来在服务中添加我们需要的方法,在这里我们创建 6 个方法,分别是 Greet (string Param1) ,HelloWord() , Add, subtract, 和 Divide (Num…
oracle存储过程中使用execute immediate执行sql报ora-01031权限不足的问题 学习了:http://blog.csdn.net/royzhang7/article/details/51172413 --解决 1.可以显示的赋给用户 create table权限 grant create table to user; 2.可以在存储过程上使用调用者权限. CREATE OR REPLACE PROCEDURE test_proc (a NUMBER, b VARCHAR…
转: oracle存储过程中%type的含义 2018-11-07 11:43:56 lizhi_ma 阅读数 1361更多 分类专栏: 数据库   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_31279347/article/details/83820838 例子: CREATE OR REPLACE procedure getDeptById ( v_deptno in de…
在ORACLE存储过程中创建临时表 存储过程里不能直接使用DDL语句,所以只能使用动态SQL语句来执行 --ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截断表(删除全部行) --ON COMMIT PRESERVE ROWS 说明临时表是会话指定,当中断会话时ORACLE将截断表. CREATE OR REPLACE PROCEDURE temptest (p_searchDate IN DATE) IS v_count INT; str varch…
1.创建错误日志表: create table REP_LOGS ( log_s_no NUMBER not null, log_date DATE default sysdate not null, log_type ) default 'E' not null, log_node ) not null, log_mesg ) not null ); -- Add comments to the table comment on table REP_LOGS is '系统操作日志信息表'; -…
原文地址:http://lin49940.iteye.com/blog/466626 今天一个同事写oracle 的存储过程遇到了一个问题, 他在里面update 操作不能完成更新的操作, 但是又不会报错. 如一个表 A(id, code, name, type) 在存储过程中的更新操作的语句: update A x set x.type = 变量A where x.code = 变量B; 变量A 和 变量B 都定义好了, 并且都成功赋值了. 这是一个很简单的更新语句, 简单到一开始对为什么发生…
一.Oracle临时表知识 在Oracle中,临时表分为SESSION.TRANSACTION两种,SESSION级的临时表数据在整个SESSION都存在,直到结束此次SESSION:而 TRANSACTION级的临时表数据在TRANACTION结束后消失,即COMMIT/ROLLBACK或结束SESSION都会清除 TRANACTION临时表数据. 1) 会话级临时表 示例 1创建 create global temporary table temp_tbl(col_a varchar2(30…
转自:http://blog.csdn.net/u010678947/article/details/20702149 错误: ORA-06550: 第 1 行, 第 7 列: PLS-00201: 必须声明标识符'ZUO.PROCE_TEST'ORA-06550: 第 1 行, 第 7 列: PL/SQL: Statement ignored 解决方法: (1)用户UserName授权: grant execute on Proc to UserName; (2)查看存储过程属性 如果不是当前…
今天有一开发兄弟找我.说出现一奇怪现象,在存储过程中赋date类型的值,时.分.秒都丢失了,以下来做个试验: SQL> drop table test purge; SQL> create table test     (      fill_date  date     ); SQL> insert into test values(sysdate); SQL> commit; SQL> select to_char(fill_date,'yyyy-MM-dd HH24:m…
在oracle的存储过程中,不能直接使用DDL语句,比方create.alter.drop.truncate等. 那假设我们想在存储过程中建立一张暂时表就仅仅能使用动态sql语句了: create or replace procedure pro as str_sql varchar2(100); begin -- 创建暂时表 str_sql := 'create global temporary table temp_table ( col1 varchar2(10), col2 number…
创建出错时使用: show errors查看具体的错误提示 一. 存储过程中的一个循环及变量引用示例: create or replace procedure my_proiscursor cur is select distinct tzname as name from V$TIMEZONE_NAMES order by name; x varchar(1024);y varchar(1024);z varchar(1024);beginfor info in cur LOOPy:=info…
---存储过程中的原语句: ---删除表 DROP TABLE A_NEWTDDATA; --报错 经查询:存储过程不支持DML语言: 解决方法: execute immediate 'DROP TABLE A_NEWTDDATA';…
--本存储过程的功能:把test_tbl2中与test_tbl1中ID相同但salary不同的记录中的salary的值更新为test_tbl1中的salary的值--创建存储过程create or replace procedure p_update_test_tbl2 is--定义游标  cursor c_test_tbl2 is    select t1.id, t1.salary      from test_tbl2 t2, test_tbl1 t1     where t2.id =…
1.什么是存储过程: 用于在数据库中完成特定的操作或者任务.是一个PLSQL程序块,可以永久的保存在数据库中以供其他程序调用. 2.无参存储过程的使用: Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size…
一.Oracle临时表知识 在Oracle中,临时表分为SESSION(会话级).TRANSACTION(事务级)两种,SESSION级的临时表数据在整个SESSION都存在,直到结束此次SESSION:而 TRANSACTION级的临时表数据在TRANACTION结束后消失,即COMMIT/ROLLBACK或结束SESSION都会清除 TRANACTION临时表数据. 1) 会话级临时表 示例 1创建 create global temporary table temp_tbl(col_a v…
1.nest表组合成结果集,然后以游标变量的形式返回 --创建类型 create or replace package mytest is -- Author  : ADMINISTRATOR  -- Created : 2008-5-13 11:19:28  -- Purpose : test TYPE record_type IS RECORD(      code   VARCHAR2(18),      p_name VARCHAR2(16)); TYPE ref_cur_type IS…
CREATE OR REPLACE PROCEDURE test_in_out_exception (v_empno VARCHAR2,v_guess_sal NUMBER,v_true_sal OUT NUMBER) AS v_exits ); v_sal emp.sal%TYPE; v_raise EXCEPTION; BEGIN ) INTO v_exits FROM emp t WHERE t.empno = v_empno; ) THEN SELECT t.sal INTO v_sal…
使用plsql 动态创建表时,用户需要具有create any table 权限 例如: create or replace procedure create_table_test is tmpstr varchar2(); v_cursor number; j number; begin .. loop begin tmpstr:= 'create table DPC_TEST'|| i ||' as select * from DPC_TEST WHERE 1=2'; dbms_output…