OraclePL/SQL编程
文章平均质量分 56
長安只在旧夢中
天下由来多壮志,江山自古少忠魂。
展开
-
Oracle数据库函数大全
Oracle SQL 提供了用于执行特定操作的专用函数。主要使用单行函数和聚合函数两种类型的函数:单行函数:对每一个函数应用在表的记录中时,只能输入一行结果,返回一个结果:字符函数、数字函数、转换函数以及日期函数。原创 2023-08-02 09:32:53 · 560 阅读 · 0 评论 -
Oracleの怪异的的Boolean类型
Oracle的数据类型中不包括Boolean,一般用 Number(1) 和 Char(1)来实现。所 以”You cannot insert the values TRUE and FALSE into a database column. Also, you cannot select or fetch column values into a BOOLEAN variable.“原创 2022-09-15 16:12:19 · 1056 阅读 · 0 评论 -
Oracle中执行动态SQL
在一般的sql操作中,sql语句基本上都是固定的,如:但有的时候,从应用的需要或程序的编写出发,都可能需要用到动态SQl,如:当 from 后的表 不确定时,或者where 后的条件不确定时,都需要用到动态SQL。使用execute immediate语句可以处理包括ddl(create、alter和drop)、DCL(grant、revoke)、DML(insert、update、delete)以及单行select语句。define_variable用于指定存放单行查询结果的变量;...原创 2022-08-10 21:19:07 · 780 阅读 · 0 评论 -
Oracle PLJson PLjsonList增删改查-你想要的都在这里
Oracle Pljson 增删改查 你想要的都在这里原创 2022-07-08 20:23:27 · 895 阅读 · 0 评论 -
Oracle数字方式时间格式转To_Date 例如:20210629080600 处理
Select * From 病案主页 A Where A.出院日期 >= To_Date(To_Char(Cast(TO_TIMESTAMP('20210629080600', 'yyyyMMddHH24missff3') As Date), 'yyyy-MM-dd hh24:mi:ss'), 'yyyy-MM-dd hh24:mi:ss')原创 2022-04-25 11:04:51 · 556 阅读 · 0 评论 -
Oracle Ltrim&&Rtrim之Bug优化为LRTrim
--去除头和尾的delimiter --psrc := RTrim(LTrim(psrc, delimiter), delimiter); --此方法在问题, 例如 A123A456A789A12, A13 会把 开头的A1清理掉,单字符是没问题的,请慎用原创 2022-04-08 11:29:41 · 746 阅读 · 0 评论 -
Oracle Clob大于4000字节报错,那是你不懂Clob,XML类型的Clob在过程中就是取不到,我帮你
问题1:Oracle 调试大约4000字节XMLType类型入参调试。问题2:XML类型的Clob在过程或者包体中无法直接获取原创 2022-03-30 20:22:37 · 5316 阅读 · 4 评论 -
Oracle 之 Rownum Between And
先来个DEMO(有效):Select RN,'Chr('||RN || ')',Chr(RN) From (Select Rownum As RN From All_Objects Where Rownum<=129) Where RN Between 33 And 129 《下面是详细分析》测试表 EMPSELECT * FROM EMP;ROWNUM(顺便对比下 ROWID)ROWID 和 ROWNUM 都是伪列,但含义完全不同。ROWID 是物理地址,用原创 2021-10-28 10:06:32 · 777 阅读 · 0 评论 -
oracle VARCHAR2和NVARCHAR2的区别
区别一:VARCHAR2(size type),size最大为4000,type可以是char也可以是byte,不标明type时默认是byte(如:name VARCHAR2(60))。NVARCHAR2(size),size最大值为2000,单位是字符区别二:VARCHAR2最多存放4000字节的数据,最多可以可以存入4000个字母,或最多存入2000个汉字(数据库字符集编码是GBK时,varchar2最多能存放2000个汉字,数据库字符集编码是UTF-8时,那就最多只能存放1333.原创 2021-08-27 10:39:54 · 136 阅读 · 0 评论 -
Oracle获取拼音简码
...Create Or Replace Function W...原创 2021-06-05 17:07:54 · 329 阅读 · 0 评论 -
Oracle 根据身份证计算年龄 性别 生日
1.根据身份证获取年龄、性别、生日CREATE OR REPLACE Function ZlXA_Fun_CheckIDCard( Idcard_In In Varchar2, Calcdate_In In Date := Null ) Return Varchar2 Is ------------------------------------------------------------------------------- --功能:身份证号码合法性校验,并返回原创 2021-03-12 11:27:34 · 1880 阅读 · 0 评论 -
Oracle 索引失效处理
--查看 表统计信息 (采样比例sample_size小于blocks不支持索引时)select table_name,num_rows,blocks,sample_size,last_analyzedfrom user_tables where table_name = '表名' --测试1、采样强制索引方式查询一下效果明显,可修改采样比例sample_size(reg--别名 V_REG_APP_INFO_STATUS--索引名)Select /*+ INDEX(表 索引) */ 列 ...原创 2021-03-10 18:48:12 · 239 阅读 · 2 评论 -
Oracle 使用DBLink技术 同步异地数据库
OracleDBLink介绍地址https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_5005.htm基本信息 Oracle在跨地域库访问,可以通过创建DBLink实现。 环境配置:在tnsnames.ora中配置两个数据库别名:HISDB(用户名:SBHIS 密码:XXX)、PACS(用户名:PACS密码:PACS),在HISDB中 创建DBLink来访问PACS ...原创 2021-03-06 11:01:43 · 1153 阅读 · 2 评论 -
Oracle SQL 优化总结
一、缩小范围减少额外 io/cpu / 物理 / 逻辑等性能消耗①、缩小范围 (全扫能否加过滤条件’最好是索引条件’);②、分区表尽量加分区条件执行计划区别:(PARTITION RANGE ALL 分区全扫) (PARTITION RANGE SINGLE 分区范围)”③、是否存在没意义的关联条件例如 1:A.id in (Select id from a1)① and A.id in (Select id from a1 where id=1)② 此时可以注释掉①部...转载 2021-01-13 23:37:43 · 149 阅读 · 0 评论 -
Update的另一种写法
<br /> 最近学到update的另一种写法,是以前自己从来没有使用过的,看了一下文档,也没有找到很详细的说明。这种update方式其基础是建立在Query中的,所以可以确保使用CBO而非RBO,可以在大表的更新时明显得提高效率。在这里记录一下基本的方法:<br /> <br /> <br />SQL> create table a ( id int, a1 varchar2(25) ); <br />SQL> create table b ( id int, b1 varchar2(25) );<原创 2010-11-26 20:49:00 · 708 阅读 · 0 评论 -
Oracle合并行 解析
转自 :http://www.ll19.com/log/2010/06/04/115.html<br /> <br />一个工作中遇到的ORACLE合并行,对合并结果排序的记录。本来简单的认为使用wmsys.wm_concat函数就行,结果出了一些小问题,解决起来还是挺折腾的,认真记录一下:<br />表eims_gwjk_dbcb_log部分记录如下:SELECT*FROM eims_gwjk_dbcb_log t<br /> <br />注意选中的几行。现在想以WFID为准进行合并行的操作,一开始使原创 2010-09-11 17:06:00 · 909 阅读 · 0 评论 -
ORACLE 批量绑定 FORALL 与 BULK COLLECT
<br />FORALL与BULK COLLECT的使用方法: <br />1.使用FORALL比FOR效率高,因为前者只切换一次上下文,而后者将是在循环次数一样多个上下文间切换。 <br /><br />2.使用BLUK COLLECT一次取出一个数据集合,比用游标条取数据效率高,尤其是在网络不大好的情况下。但BLUK COLLECT需要大量内存。 <br /><br />例子: <br />Sql代码 create table test_forall ( user_id number(10), user原创 2010-09-11 17:10:00 · 653 阅读 · 0 评论 -
Oracle 高效SQL
<br />No1:选择合适的优化器No2:共享SQL 为了不重复解析相同的SQL语句,在第一次解析之后, ORACLE将SQL语句存放在内存中.这块位于系统全局区域SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的数据库用户共享. 因此,当你执行一个SQL语句(有时被称为一个游标)时,如果它和之前的执行过的语句完全相同, ORACLE就能很快获得已经被解析的语句以及最好的执行路径. ORACLE的这个功能大大地提高了SQL的执行性能并节省了内原创 2010-09-02 12:53:00 · 514 阅读 · 0 评论 -
Oracle 碎片整理
<br /> 我们知道,oracle作为一种大型数据库,广泛应用于金融、邮电、电力、民航等数据吞吐量巨大,计算机网络广泛普及的重要部门。对于系统管理员来讲,如何保证网络稳定运行,如何提高数据库性能,使其更加安全高效,就显得尤为重要。作为影响数据库性能的一大因素--数据库碎片,应当引起dba的足够重视,及时发现并整理碎片乃是dba一项基本维护内容。 <br /> ----1、碎片是如何产生的 <br /> 当生成一个数据库时,它会分成称为表空间(tablespace)的多个逻辑段(segment),如原创 2010-09-07 10:49:00 · 482 阅读 · 0 评论 -
oracle笔记一(sql语句方面)
<br />oracle笔记一(sql语句方面) <br /> <br /><br /><br /> 一.sql语句<br />--================================================<br />1.增加主键<br /> alter table TABLE_NAME add constraint KEY_NAME primary key (TABLE_COLUMN);<br /> 指定表空间<br /> alter table TABLE_NAME a原创 2010-11-27 17:07:00 · 4348 阅读 · 2 评论 -
使用正规表达式编写更好的SQL
<br />Oracle Database 10g 中的正规表达式特性是一个用于处理文本数据的强大工具<br /><br /> Oracle Database 10g 的一个新特性大大提高了您搜索和处理字符数据的能力。这个特性就是正规表达式,是一种用来描述文本模式的表示方法。很久以来它已在许多编程语言和大量 UNIX 实用工具中出现过了。 <br /> Oracle 的正规表达式的实施是以各种 SQL 函数和一个 WHERE 子句操作符的形式出现的。如果您不熟悉正规表达式,那么这篇文章可以让您了解一下这原创 2010-11-29 16:55:00 · 618 阅读 · 0 评论 -
Oracle 关于INSERT FIRST和INSERT ALL
<br />insert first/all<br />利用insert first/all使得INSERT语句可以同时插入多张表,还可以根据判断条件来决定每条记录插入到哪张或哪几张表中。<br />insert first/all语法 <br />[ ALL | FIRST ] <br />WHEN condition THEN insert_into_clause [values_clause] <br />[insert_into_clause [values_clause]]... <br />[W原创 2010-12-15 10:31:00 · 2156 阅读 · 0 评论 -
Oracle 有趣排序
<br />其实Oracle 的排序是很有意思的,接下来我们就主要来介绍Oracle 有趣排序,如果你对Oracle 的排序很感兴趣的话,以下就是文章的具体内容介绍,希望你浏览完以下的内容会有所收获。<br />按拼音排序 (系统默认)<br />Select * From perexl Order By nlssort(danwei, 'NLS_SORT=SCHINESE_PINYIN_M'); --按部首排序<br />Select * From perexl Order By nlssort(danw原创 2010-10-25 14:57:00 · 439 阅读 · 0 评论 -
Oracle Forall 与BULK COLLECT
FORALL语句的一个关键性改进,它可大大简化代码,并且对于那些要在PL/SQL程序中更新很多行数据的程序来说,它可显著提高其性能。1:用FORALL来增强DML的处理能力Oracle为Oracle8i中的PL/SQL引入了两个新的数据操纵语言(DML)语句:BULK COLLECT和FORALL。这两个语句在PL/SQL内部进行一种数组处理;BULK COLLECT提供对数据的高速检索,FORALL可大大改进INSERT、UPDATE和DELETE操作的性能。Oracle数据库使用这些语句大大减少了PL/原创 2010-10-25 15:53:00 · 968 阅读 · 0 评论 -
Oracle中批处理和Using用法
<br /> 1. 静态SQLSQL与动态SQL<br /><br /> Oracle编译PL/SQL程序块分为两个种:其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情况属于这种类型;另外一种是后期联编(late binding),即SQL语句只有在运行阶段才能建立,例如当查询条件为用户输入时,那么Oracle的SQL引擎就无法在编译期对该程序语句进行确定,只能在用户输入一定的查询条件后才能提交给SQL引擎进行处理。通常,静态SQL采用前一种编原创 2010-10-29 17:39:00 · 1099 阅读 · 0 评论 -
Oracle PRAGMA RESTRICT_REFERENCES 理解
<br />一 介绍:<br />在Oracle application developer's guide --fundmental中9-60(oracle9i)有介绍,<br />copy一点给你先看看。<br />Using Pragma RESTRICT_REFERENCES<br />A function called from SQL statements must obey certain rules meant to control side effects. To check for v原创 2010-10-29 17:15:00 · 4653 阅读 · 1 评论 -
Oracle 构建定制 期间划分段 [类似期间表]
SQL> Select 2 To_char(Sysdate,'YYYY')||Lpad(Rownum,2,0) As 期间, 3 To_Date(To_char(Sysdate,'YYYY')||Lpad(Rownum,2,0)||'01','YYYY-MM-DD') As 开始时间 , 4 Add_Months(To_Date(To_char(Sysdate,'YYYY')||Lpad(Rownum,2,0)||'01'原创 2010-11-18 11:38:00 · 438 阅读 · 0 评论 -
Oracle的 Merge用法详解
Oracle9i引入了MERGE命令,你能够在一个SQL语句中对一个表同时执行inserts和updates操作. MERGE命令从一个或多个数据源中选择行来updating或inserting到一个或多个表.在Oracle 10g中MERGE有如下一些改进: 1、UPDATE或INSERT子句是可选的 2、UPDATE和INSERT子句可以加WHERE子句 3、在ON条件中使用常量过滤谓词来insert所有的行到目标表中,不需要连接源表和目标表 4、UPDATE子句后面可以跟DELETE子句来去除一些不需原创 2010-09-11 15:55:00 · 683 阅读 · 2 评论