dbms_output.put_line(to_char(sql%rowcount));…
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…
from:http://blog.163.com/rihui_7/blog/static/212285143201381343240404/ 返回受上一语句影响的行数. ROWCOUNT_BIG." xmlspace="preserve" style="line-height: 22.75px;">如果行数大于 20 亿,请使用 ROWCOUNT_BIG.  Transact-SQL 语法约定 语法 @@ROWCOUNT 返回类型 int 注释 Tr…
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…
在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…
本文标签:Oracle存储过程 我们都知道在Oracle数据库的实际应用的过程中,我们经常把相关的业务处理逻辑,放在Oracle存储过程中,客户端以通过ADO来进行相关的调用  .而有些相关的业务逻辑处理量大并且复杂  . 使客户端调用存储过程后,长时间没有反应,也不知Oracle存储过程运行状态, 本文讲述如何在ORACLE通过任务和管道的应用,异步调用存储过程的方法  .  基本原理 1.使用DBMS_JOB包将主处理存储过程作为任务提交到任务队列中 2.主处理存储过程在运行过程中通过DBM…
一.获取SQL语句执行计划的方式 1. 使用explain plan 将执行计划加载到表plan_table,然后查询该表来获取预估的执行计划 2. 启用执行计划跟踪功能,即autotrace功能 3. 使用PL/SQL Developer提供的获取执行计划方法 - F5键 4. 查询动态性能视图v$sql_plan,v$sql_plan_statistics,v$sql_workarea 等来获取已缓存到库缓存中的真实执行计划 5. 查询自动工作量资料库(Automatic Workload…
注:本文来源于: <  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…
ORACLE存储过程中%TYPE和%ROWTYPE的区别 在存储过程中%TYPE和%ROWTYPE常用来在PL/SQL中定义变量 因为 t_emp emp%rowtype ;这个语句的意思是 定义一个变量t_emp使其与EMP表具有一样的数据类型. 也就是说EMP表有哪里数据类型的字段,那么这个t_EMP变量也就能够存储什么类型的数据,而且大小范围也是一样的.(如VARCHAR2(20)) (一)使用%TYPE PL/SQL中的变量用来存储在数据库表中的数据,所以变量和表中的列应该有相同的类型,…
---存储过程中的原语句: ---删除表 DROP TABLE A_NEWTDDATA; --报错 经查询:存储过程不支持DML语言: 解决方法: execute immediate 'DROP TABLE A_NEWTDDATA';…
注:本文来源于 <  java 实现往oracle存储过程中传递array数组类型的参数  >最近项目中遇到通过往存储过程传递数组参数的问题, 浪费了N多个小时,终于有点头绪. 具体的代码就不写上了,因为项目中存储过程的调用方法全部是封装好的(好像现在都这样,都姓3层,嘿嘿)  原理: 1.一维数组 A.单纯的一维数组的话,直接建立一个table类型就可以  TYPE TYPE_VARCHAR AS TABLE OF VARCHAR2(200); 2.多维数组 A.多维数组就要稍加修改了,如二…
import java.util.HashMap; import java.util.Map; public class FinallyDemo1 { public static void main(String[] args) { System.out.println("================================="); System.out.println("A情况:finally在try的return执行之后,返回之前."); Syste…
转: 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数据库存储过程中如果用了select语句,要么使用"select into 变量"语句要么使用游标,oracle不支持单独的select语句. 先看下这个存储过程: create or replace procedure pro_test  is  begin  select * from t_test;  end pro_test; 这个存储过程正确吗? 昨天因为这个,耽误了好久(在一个存储过程中用了select语句,但既没有用游标也没有用into). 在存储过程…
在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…
下面的都是最基本的oracle数据库的数据查询语句,这是我在网上整理的一份文档,方便以后自己的查看,当然,能把这些记下来就是最好的. 说明:查询表中的数据 1. select * from emp; 说明:按字段查询表中的数据 2. select empno, ename, job from emp; 说明:按字段查询表中的数据并给字段取一个新的别名 3. select empno 编号, ename 姓名, job 工作 from emp; 说明:只查询表中的一个字段 4. select jo…
一.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://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 都定义好了, 并且都成功赋值了. 这是一个很简单的更新语句, 简单到一开始对为什么发生…
--如果在存储过程中定义变量,并为变量SET赋值,该变量的值无法为执行计划提供参考(即执行计划不考虑该变量),将会出现预估行数和实际行数相差过大导致执行计划不优的情况--如果在存储过程中使用SET为存储过程参数重新赋值,执行计划仍采用执行时传入的值来生成执行计划.--=======================================--准备测试数据DROP TABLE TB1GOSELECT IDENTITY(INT,1,1) AS RID,*INTO TB1FROM sys.all…
通常情况下,Oracle数据库禁止在行级触发器或行级触发器所调用的子程序中使用查询语句.但是,面对复杂的业务逻辑,不可避免的要使用查询语句. 当在行级触发器中使用查询语句时,Oracle数据库会抛出ORA-04091异常. Oracle官方文档中对ORA-04091异常的说明如下: ORA-04091: table string.string is mutating, trigger/function may not see it Cause: A trigger (or a user defi…
很多时候我们需要利用参数在存储过程中重新组织SQL语句,在存储过程中拼接的SQL语句只是一个字符串,不会被直接执行,所以加一个execute执行它就可以了.具体看如下演示代码: 代码: set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go -- ============================================= -- Author:      yy -- Create date: 2012-1-17 -- Description: 存…
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 '系统操作日志信息表'; -…
远程URL:https://121.199.16.229:8890/generate.cgi?rbid=1001&esn=22021434025005&pic=png&count=1&pix=250&cor=lo&comm=%E6%B5%A6%E6%B1%9F%E6%B8%B8%E8%A7%881%E5%8F%B7%E9%BE%99%E8%88%B9%2F%E5%B7%A5%E8%A1%8C%E5%8F%B7%EF%BC%8C2013%E5%B9%B46%E…
今天有一开发兄弟找我.说出现一奇怪现象,在存储过程中赋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…
创建出错时使用: 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…
ALTER PROC [dbo].[Student_Friend_Get] @startRowIndexId INT, @maxNumberRows INT, @schoolId INT, @gradeId INT, @cId INT, @keyWords NVARCHAR(100), @userName VARCHAR(50) AS BEGIN DECLARE @sqlfilter VARCHAR(max) SET @sqlfilter = ' ' IF(@schoolId <> -1) S…
转载自:小强斋太-Study Notes,原文链接 从join on和where执行顺序认识T-SQL查询处理执行顺序 目录 一.样例 二.SELECT语句的处理过程 1. FROM阶段 2. WHERE阶段 3. GROUP BY阶段 4. HAVING阶段 5. SELECT阶段 6. ORDER BY阶段 三.样例解释 数据库SQL(Structure Query Language)包含3种类型的语言:DML(Data Manipulation Language).DDL(Data Def…
本文转载自:http://www.cnblogs.com/linjiqin/archive/2011/04/18/2019990.html 1.事务用于确保数据的一致性,由一组相关的DML语句组成,该组DML语句所执行的操作要么全部确认,要么全部取消.2.当执行事务操作(DML)时,Oracle会在被作用的表上加锁,以防止其他用户改变表结构,同时也会在被作用的行上加行锁,以防止其他事务在相应行上执行DML操作.3.当执行事务提交或事务回滚时,Oracle会确认事务变化或回滚事务.结束事务.删除保…
一.Oracle临时表知识 在Oracle中,临时表分为SESSION(会话级).TRANSACTION(事务级)两种,SESSION级的临时表数据在整个SESSION都存在,直到结束此次SESSION:而 TRANSACTION级的临时表数据在TRANACTION结束后消失,即COMMIT/ROLLBACK或结束SESSION都会清除 TRANACTION临时表数据. 1) 会话级临时表 示例 1创建 create global temporary table temp_tbl(col_a v…
create or replace procedure APP_BUSSINESS_CARD_LIST(p_in_str in varchar2,p_out_str out varchar2) is /******************************************************************************* out varchar2我本地oracle显示最长不能超过2000个字符 -- 函数名称 APP_BUSSINESS_CARD_LIST…