1.生成0001-9999的编码 //在PL/sql中 创建一个序列 Create sequence seq_cdptIncrement by 1 --自增数Start with 1 --开始累加数Maxvalue 999999 --最大数Minvalue 1 --最小开始数Nocycle --一直累加不循环nocache select substr('000'||seq_cdpt.nextval,-4) from dual…
转:http://www.cnblogs.com/JasonLiao/archive/2009/12/23/1630895.html Oracle中的 UPDATE FROM 解决方法 在表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据.象sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来.虽然只能对一个表进行更新,但是通过将要更新的表与其它的数据源连接起来,就可以在update的表达式中引用要更新的表以外的其它数据. 例如:UPDA…
序列是什么? 序列是用来生成唯一.连续的整数的数据库对象.序列通常用来自动生成主键或唯一键的值.序列可以按升序排列,也可以按照降序排列. 其实Oracle中的序列和MySQL中的自增长差不多一个意思. 创建序列  创建序列.从序号10开始,每次增加1,最大为2000,不循环,再增加会报错 CREATE SEQUENCE seq1 START WITH 10 INCREMENT BY 1 MAXVALUE 2000 NOCYCLE CACHE 30; 访问序列 访问下一个: seq1.NEXTVA…
转: Oracle中使用Table()函数解决For循环中不写成 in (l_idlist)形式的问题 在实际PL/SQL编程中,我们要对动态取出来的一组数据,进行For循环处理,其基本程序逻辑为: 1 2 3 4 5 6 7 8 9 10 11 12 create or replace procedure getidlist is   l_idlist varchar2(200); begin   l_idlist:='1,2,3,4';   for brrs in (select * fro…
因业务需要,把oracle 数据据转成mysql,同时oracle中程序本来一直在用 序列, mysql中没有,所以需要在mysql中新建一个表进行模拟, CREATE TABLE `sequence` ( `name` varchar(200) NOT NULL, `current_value` bigint(20) NOT NULL, `increment` int(11) NOT NULL DEFAULT '1', PRIMARY KEY (`name`)) ENGINE=InnoDB D…
背景介绍: SQL SERVER可以在int类型的字段后加上identity(1,1),该字段就会从1开始,按照+1的方式自增,将这个字段设置为主键,有利于我们进行数据的插入操作.MySql中可以使用"auto_increment"即可.但是oracle有点麻烦,需要使用序列和触发器达到目的. --学校表 create table school(sid number(4),sname varchar2(400 char), check_status number(1) default…
序列: 是oacle提供的用于产生一系列唯一数字的数据库对象. 自动提供唯一的数值 共享对象 主要用于提供主键值 将序列值装入内存可以提高访问效率 创建序列: 1.  要有创建序列的权限 create sequence 或 create any sequence 2.  创建序列的语法 CREATE SEQUENCE sequence  //创建序列名        [INCREMENT BY n]  //递增的序列值是n 如果n是正数就递增,如果是负数就递减 默认是1        [STAR…
事务(Transaction) 事务(Transaction)是一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位,是数据库环境中的逻辑工作单位. 事务是为了保证数据库的完整性 在oracle中,没有事务开始的语句.一个Transaction起始于一条DML(Insert.Update和Delete )语句,结束于以下的几种情况: 用户显式执行Commit语句提交操作或Rollback语句回退. 当执行DDL(Create.Alter.Drop)语句事务自动提交. 用户正常断开…
原因:set autotrace on和set trimspool on在pl\sql中使用不了 解决方法:在window环境中,使用cmd命令,sqlplus user_name/password@tns_name,然后就可以set了…
问题描述: 假设在数据库中存在以下两张数据表: User表,存放用户的基本信息,基本结构如下所示:   类型 说明 ID_User int 自动增长字段,用作该表的主键 UserName varchar   UserDepart表,存放用户所拥有的部门(我们假设一个用户拥有多个部门,虽然听起来有点别扭,此处仅作示例,可以理解为一个用户拥有多个职位等等),该表的基本结构如下所示:   类型 说明 ID_UserDepart int 自动增长字段,用作该表的主键 ID_User int 用户编号 I…
1.什么是序列呢? 序列是一数据库对象,利用它可生成唯一的整数.一般使用序列自动地生成主码值.一个序列的值是由特别的Oracle程序自动生成,因而序列避免了在运用层实现序列而引起的性能瓶颈. Oracle序列允许同时生成多个序列号,而每一个序列号是唯一的. 当一个序列号生成时,序列是递增,独立于事务的提交或回滚.容许设计缺省序列,不需指定任何子句.该序列为上升序列 ,由1开始,增量为1,没有上限. 2.创建/修改序列的语法 --创建序列的语法 -- create sequence [user.]…
drop sequence SEQ_YCXWP_CGD; create sequence SEQ_YCXWP_CGD increment start nomaxvalue;…
一.通过触发器的方式 CREATE OR REPLACE TRIGGER tg_test BEFORE INSERT ON Userinfo FOR EACH ROW WHEN (new.userNo is null) begin select SEQ_Userinf.nextval into:new.userNO from dual; end; 插入语句为: insert into CATEGORY_EXPERT_GRADE (CATEGORY_FK, EXPERT_FK,GRADE,SAVE…
sql server方案1: id from t order by id ) orde by id sql server方案2: id from t order by id) order by id desc mysql方案:, oracle方案:) --------------------待整理进去的内容------------------------------------- pageSize; pageNo ; .分页技术1(直接利用sql语句进行分页,效率最高和最推荐的) mysql:s…
今天在做 Oracle表字段更新时出现了特殊字符&,导致无法更新. 这个问题是第二次碰到了,所以在此记录下,以备后用. 举例: update t set col1='A&B' where ... 点击执行时,弹出了这个东东,是不是很奇怪? 百度过后知道&字符在Oracle中是特殊字符. 解决方法如下: update t set col1='A'||'&'||'B' where ...…
一.视图(重点) 视同的功能:一个视图其实就是封装了一个复杂的查询语句.1.创建视图的语法:CREATE VIEW 视图名称 AS 子查询 范例:创建一个包含了20部门的视图CREATE VIEW empv20 AS SELECT * FROM emp WHERE deptno=20; 对于没有授权的解决方法:登陆sys as SYSDBA,然后grant create any view to 用户名(scott) 2.查询视图:SELECT * FROM empv20; 3.OR REPLAC…
在进行批量对DML操作时程序竟然中断了,不再往下执行.查询一下某张表被锁住了,因此不再往下执行了 如果怀疑表被锁了,或者事务未被正常关闭,在Oracle数据库中我们可以通过以下语句进行查询获取相关信息: select t2.username,       t2.sid,       t2.serial#,       t3.object_name,       t2.OSUSER,       t2.MACHINE,       t2.PROGRAM,       t2.LOGON_TIME, …
好的编程习惯,是一个很有必要的过程.好的编程习惯,可以因人而异,但是简单地.基本地代码级别的就那些:写注释.合理的缩进.换行.变量命名等. 对我们程序员来说,大部分时间都对着电脑,在对着电脑的大部分时间都在对着代码,要么是看别人代码,要么是在写代码.在看别人的代码的过程中,当看到别人 的代码很乱的时候,心里肯定会说,这他妈的谁写的代码,看起来真费劲,要注释没注释,该换行的时候没换行,缩进也没规则.所以,好的编程习惯,一个好处就是,方便自己,也方便别人看自己的代码.编程的时候很多情况是由于一些细节…
CREATE TABLE STUDENT( --创建学生表  ID NUMBER(10) PRIMARY KEY,   --主键ID  SNAME VARCHAR2(20), ); 此时给学生表添加数据时 必须指定id INSERT INTO STUDENT VALUES(1,'Tom'); 下面用触发器和序列结合使得添加数据时id自动增长 不要指定了 --创建序列CREATE SEQUENCE SEQ_STUINCREMENT BY 1  ID每次自增几START WITH 1 ID从几开始自…
使用过Oracle的都知道,Oracle中的自增是靠序列来完成的,在一定程度上蛮方便的.现在SQL 2012中也有序列了.来看看怎么做的吧! SQL Server 现在将序列当成一个对象来实现,创建一个序列的语法如下: CREATE SEQUENCE [schema_name . ] sequence_name [ AS [ built_in_integer_type | user-defined_integer_type ] ] [ START WITH <constant> ] [ INC…
oracle中主键自增 下面用一个例子来说明自增主键的创建: 1.建用户数据表 drop table dectuser; create table dectuser( userid integer primary key,  /*主键,自动增加*/ name varchar2(20), sex varchar2(2) );2.创建自动增长序列 drop sequence dectuser_tb_seq; create sequence dectuser_tb_seq minvalue 1 max…
oracle没有ORACLE自增字段这样的功能,但是通过触发器(trigger)和序列(sequence)可以实现. 下面给大家讲个例子: 1.在Oracle中创建一个表: .创建一个表 ) primary key, pid ) not null, name ) not null, client_id ), client_level ), bank_acct_no ), contact_tel ), address ), zip_code ), is_leaf ) default 'y' che…
序列 序列是用来生成唯一,连续的整数的数据库对象.序列通常用来自动生成主机那或唯一键的值.序列可以按升序排序, 也可以按降序排序.例如,销售流水表中的流水号可以使用序列自动生成. 创建序列语法: create sequence sequence_name [START WITH integer] [INCREMENT BY integer] [MAXVALUE integer|NOMAXVALUE ] [MINVALUE integer|]NOMAXVALUE ] [CYCLE|NOCYCLE]…
1.主键自增实现方法:http://www.cnblogs.com/Donnnnnn/p/5959871.html 2.for循环往Oracle中插入n条数据 BEGIN .. loop insert into S_Depart(departId,Departname,Departorder)values(S_S_Depart.Nextval,); end loop; end; 上面循环了50次 执行后,记得commit提交.....…
解决比较Oracle中CLOB字段问题   Oracle中CLOB和BLOB字段虽说在开发中满足了存放超大内容的要求,但是在一些简单使用中确频频带来麻烦.CLOB中存放的是指针,并不能直接取到实际值.而SQLServer中的text字段就很方便,可以直接拿来与需要的字符串比对,象什么等于呀小于呀Like呀不在话下.可是换成Oracle就麻烦死了,要开辟一个缓存,把内容一段段读取出来后转换,难道写个where条件都这么复杂?经过多方寻求资料,终于发现一个方便简单的方法:利用dbms_lob 包中的…
在一些数据库(例如mysql)中,实现自增id只要在建表的时候指定一下即可, 但是在oracle中要借助sequence来实现自增id, 要用上自增id,有几种方式: 1.直接在insert语句中使用sequence的nextval. 2.在建表时为字段设置default,这种方式我还没测试. 3.使用触发器,关于触发器的方式,从别人那得到了一个示例,暂且先贴到这里作为备忘.我觉得如果default方式如果可用的话,会比使用触发器的方式简单. 以下是触发器方式相关的代码: CREATE TABL…
一 序列定义 序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).不占用磁盘空间,占用内存. 其主要用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值. 二 创建序列 创建序列需要CREATE SEQUENCE系统权限.序列的创建语法如下: CREATE SEQUENCE 序列名 [INCREMENT BY n] [START WITH n] [{MAXVALUE/ MINVALUE n| NOMAXV…
转载:https://www.cnblogs.com/liuzy2014/p/5794928.html 在oracle中sequence就是序号,每次取的时候它会自动增加.sequence与表没有关系. 1.Create Sequence 首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限. 创建语句如下: CREATE SEQUENCE seqTestINCREMENT BY 1 -- 每次加几个START WITH 1 -- 从1开始计数NOMAXvalue…
在sqlplus中用autotrace查看执计划时出现如下错误提示: SYS@CDB$ROOT> conn scott/tiger@pdborcl Connected.会话已更改. SCOTT@PDBORCL> set autotrace on; : 无法找到会话标识符.启用检查 PLUSTRACE 角色 : 启用 STATISTICS 报告时出错 这是由于角色PLUSTRACE不存在,或没有创建. 只要执行$ORACLE_HOME/sqlplus/admin/plustrce.sql脚本就创…
window下的sqlplus可以通过箭头键,来回看历史命令,用起来非常的方便. 但是在Linux下,会出现各种乱码,非常不方便,如下图所示,每次打错一个字符就需要重新打一遍. 解决办法:rlwrap 可以用来支持Oracle下sqlplus历史命令的回调功能,提高效率. 解决过程: 1.首先下载rlwrap和readline: ? 1 2 readline-6.3.tar.gz   rlwrap-0.30.tar.gz 2.安装readline包 ? 1 2 3 4 5 tar -zxvf r…