【Oracle实现类似SQLServer中自增字段的一个办法】教程文章相关的互联网学习教程文章

【小计】PostgreSQL实现Oracle的decode函数功能【代码】

create or replace function decode(variadic p_decode_list text[]) returns text as $$ declare -- 获取数组长度(即入参个数) v_len integer := array_length(p_decode_list, 1); -- 声明存放返回值的变量 v_ret text; begin /* * 功能说明:模拟Oracle中的DECODE功能(字符串处理, 其它格式可以自行转换返回值) * 参数说明:格式同Oracle相同,至少三个参数 * 实现原理: 1、VARIADIC 允许变参; 2、Oracle中的DECODE是拿第一...

oracle使用case或decode语句实现批量更新【代码】

UPDATE categories 2 SET display_order = CASE id 3 WHEN ‘1‘ THEN 3 4 WHEN ‘2‘ THEN 4 5 WHEN ‘3‘ THEN 5 6 END 7 WHERE id IN (‘1‘,‘2‘,‘3‘);或者更普遍的方式:UPDATE testSET first_name = CASE WHEN card_no = 100 THEN ‘aaa‘WHEN card_no = 110 THEN ‘bbb‘ELSE first_name END如果要批量更新多条记录的多个字段,则UPDATE categories SET display_order = CASE ...

使用rlwrap实现sqlplus上下键翻阅输过的oracle历史命令【代码】

Oracle的同学可能在Linux 下使用SecureCRT来连接服务器,在使用sqlplus时像调用之前输入过的命令重新执行,没法实现????同样的问题肯定前辈们一定也遇到过,所以就Google了一下,找到了rlwrap这个工具,下面我们来一起看下吧:rlwrap 下载地址:http://utopia.knoware.nl/~hlub/uck/rlwrap/#rlwrap一、安装readline包在系统的光盘中我们很容易找到符合自己版本的包#rpm -qa| grep readline//先检查一下系统是否安装过#rpm -Uvh...

Oracle 11g Pivot函数实现行转列【代码】

先上语法规范: SELECT .... FROM <table-expr>PIVOT(aggregate-function(<column>)FOR <pivot-column> IN (<value1>, <value2>,..., <valuen>)) AS <alias> WHERE .....通过一个例子说明其用法: select * from (select salary, department_id from employee) pivot(sum(salary) as sum_sal for(department_id) in (10,20,30)); 10_sum_sal 20_sum_sal 30_sum_sal 370000 155000 370000 在这个例子中,工资按照指定部门做聚集...

Oracle-数据实现竖排打印

--存放重症评分竖排数据视图create or replace view zzpfdy asselect "ZZ_BINGRENID","ZZ_DATETIME","SUBJECT1","RESULT" from( select 1 line,ZZ_BINGRENID,ZZ_DATETIME , ‘得分‘ SUBJECT1, ZZ_ZONGFEN result from zzpfapache2 union all select 2 line,ZZ_BINGRENID,ZZ_DATETIME , ‘死亡率‘SUBJECT1, ZZ_SHIWANGLUI result from zzpfapache2 union all select 3 line,ZZ_BINGRENID,ZZ_DATETIME , ‘年龄‘SUBJECT1,...

在Oracle数据库中实现SqlServer数据库中的NewID()函数功能【代码】

OR REPLACE FUNCTION NEWID RETURN VARCHAR2 ISGUID VARCHAR2(32); BEGINGUID:=SYS_GUID();RETURN ‘{‘||SUBSTR(GUID,1,8)||‘-‘||SUBSTR(GUID,9,4)||‘-‘||SUBSTR(GUID,13,4)||‘-‘||SUBSTR(GUID,17,4)||‘-‘||SUBSTR(GUID,21,12)||‘}‘; END NEWID;然后就可以像在SqlServer中一样用了:SELECT NEWID() AS ID FROM DUAL --返回结果是类似这样的值:{1B869DEE-BF1A-0D8C-E050-BD0A9E806700} 在Oracle数据库中实现SqlServer数...

php实现oracle操作【代码】

function Query($sql,$prms){$db = " (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = XXX)(PORT = 1521)) (CONNECT_DATA = (SID=orcl) (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )";$db_uname = "xxx";$db_upass = "XXXXXX";$conn = oci_connect($db_uname, $db_upass, $db);$stmt = oci_parse($conn, $sql);if(is_array($prms)){foreach ($prms as $key => $val){oci_bind_by_name($stmt, $key, $val);}}oci_execute($s...

oracle 创建字段自增长——两种实现方式汇总【代码】

SEQUENCE 序列名 [INCREMENT BY n] [START WITH n] [{MAXVALUE/ MINVALUE n|NOMAXVALUE}] [{CYCLE|NOCYCLE}] [{CACHE n|NOCACHE}]; 解析: 1)INCREMENT BY用于定义序列的步长,如果省略,则默认为1,如果出现负值,则代表Oracle序列的值是按照此步长递减的。 2)START WITH 定义序列的初始值(即产生的第一个值),默认为1。 3)MAXVALUE 定义序列生成器能产生的最大值。选项NOMAXVALUE是默认选项,代表没有最大值定义,这时对于递增O...

利用Oracle DDL触发器实现DDL监控【代码】

USER DBADMIN IDENTIFIED BY DBADMIN;GRANT CONNECT TO DBADMIN; GRANT DBA TO DBADMIN; GRANT SYS.V_$OPEN_CURSOR TO DBADMIN;创建序列及表DROP SEQUENCE SEQ_DDL_VERSION; CREATE SEQUENCE SEQ_DDL_VERSION INCREMENT BY 1 START WITH 1 NOMAXVALUE NOMINVALUE NOCYCLE NOCACHE;DROP TABLE TB_SYSTEM_DDL_LOGS CASCADE CONSTRAINTS;/*==============================================================*/ /* TABLE: TB_SYSTEM_DDL...

Oracle 学习之性能优化(七)join的实现方式【代码】【图】

Hash Join适合处理大型结果集,优化器选择两个表或者源数据中比较小的,使用join key在内存中建立一个hash table。然后扫描大表,并探查hash表,去发现匹配的记录。 小表称为驱动表,大表称为探查表当hash table能全部放到内存中,此种情况最好。如果内存中放不下hash table,优化器将hash table分区,超出内存范围的分区将被写到临时表空间中。我们分两种情况讨论hash join的实现hash table 全部在内存里 hash table是Oracle根据...

使用Goldengate 实现Oracle for Oracle 单向数据同步【代码】

实验环境数据源端: host1 ip 192.168.199.163 数据目标端: host2 ip 192.168.199.104两台机器都安装 http://lqding.blog.51cto.com/9123978/1694971 文中描述安装配置好了Goldengate 。要实现数据的同步,Oracle源端必须满足如下设置Oracle需要运行在归档模式下SQL> startup mount ORACLE instance started.Total System Global Area 835104768 bytes Fixed Size 2217952 bytes Variable Size 574621728 bytes Datab...

Oracle - 使用序列+触发器实现主键自增长

--1.创建序列2 CREATE SEQUENCE "TABLE_NAME"."SQ_NAME"3 MINVALUE 1 MAXVALUE 99999999999999999999999999994 -- 定义列的步长,默认为15 INCREMENT BY 16 -- 定义序列的起始值,默认为17 START WITH 18 CACHE 20 NOORDER NOCYCLE ;9 --2.创建触发器 10 CREATE OR REPLACE TRIGGER "TABLE_NAME"."TR_NAME" before 11 INSERT ON "TABLE_NAME"."TABLE_NAME" FOR EACH row BEGIN 12 SELECT "TABLE_NAME"."SQ_NAME".nextval 13 INTO : n...

oracle 利用函数实现多行一列数据合并效果

/* Formatted on 2013-1-11 13:23:55 (QP5 v5.185.11230.41888) */ CREATE OR REPLACE FUNCTION GetGiftsName (rid in number)//rid 穿的参数 RETURN VARCHAR2 AS STR VARCHAR2 (1000); /*返回的数据集*/ BEGIN DECLARE v_medCode VARCHAR2 (100); /*存放临时变量的地方*/ CURSOR D_cursor IS select b....

java实现oracle数据库基本操作

java.sql.*; import java.util.ArrayList; import java.util.List;//使用jdbc连接 public class TestOra {public static void main(String[] args) {// TODO Auto-generated method stub BaseDao basedao = new BaseDao();Connection conn = basedao.getConnection();basedao.add(conn);basedao.delete(conn);basedao.update(conn);basedao.query(conn);basedao.close();} }class BaseDao {private static String url = "jdbc:orac...

Oracle -Mybatis动态SQL查询分页的实现【代码】

*from(select a.*,ROWNUM rnfrom (最底层查询语句) awhere ROWNUM <= #{endCol})where rn > #{startCol}注意:Mybatis中 < 是小于号 >是大于号 当然 我们还需要 select count(*) 最底层查询语句来得到结果集的总数。然后再换算出 endCol 和 startCol 换算代码如下://int totalRecord= 总条数;//计算分页int intPS=Integer.parseInt(pageSize);int intPN= Integer.parseInt(pageNo);int intStartCol= intPS*(intPN-1)+1;int in...