[ 20 ] Oracle
安得权
悲观者往往正确 乐观者往往成功
展开
-
PLSQL 连接 Oracle ( 不安装 OracleClient )
准备工作: 1. 绿色版 Oracle Client 解压就可用 (本人用的,点击下载) 官网地址:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 2. PL SQL 的 安装包 (本人使用版本,点击下载) ...原创 2018-05-09 13:52:24 · 2210 阅读 · 0 评论 -
解析oracle的rownum
本人最近在使用oracle的rownum实现分页显示的时候,对rownum做了进一步的分析和研究。现归纳如下,希望能给大家带来收获。 对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀。 举例说明:例如表:student(学生)转载 2014-08-01 13:45:19 · 493 阅读 · 0 评论 -
Oracle SID在本机上已经存在,请指定一个不同的SID”的解决办法
1、 开始->设置->控制面板->管理工具->服务 停止所有Oracle服务。 2、 开始->程序->Oracle - OraHome92->Oracle Installation Products-> Universal Installer 卸装所有Oracle产品,但Universal Installer本身不能被删除5、 运行regedit,选择HKEY_LOCAL_MACHIN转载 2014-05-13 14:14:37 · 843 阅读 · 0 评论 -
Oracle中insert into select和select into的用法(异常0RA-00905:missing keyword的解决)
两张表进行数据的拷贝,最常用的拷贝语句是:insert into select 和 select into from但是请绝对的注意:在Oracle中select into from不可以使用-----原因很简单:select into是PL/SQL language 的赋值语句!如果使用则Oracle会抛出0RA-00905:missing keyword的异常!转载 2014-04-11 09:00:29 · 1503 阅读 · 0 评论 -
oracle先判断数据是否存在再插入
有时候用oracle的数据库,插入数据的时候需要判断一下。比如,每天每人只能写一条。 在插入的时候就要先做个判断,查一下是不是当天有此人的操作记录。就要先select count(*) from xxx然后再执行insert,其实不需要这样子,oracle内置在insert语句中判断的,如下sql:insertwhen (not exists (select 1 from转载 2014-05-16 11:24:44 · 11430 阅读 · 1 评论 -
Oracle 生成流水号
辅助表(RUL_SEQUENCE):原创 2014-04-09 09:21:15 · 3832 阅读 · 0 评论 -
oracle函数怎么能让null值变为零
用nvl函数。这个函数的格式是select nvl(arg,n) from dual;意思就是说,如果arg这个参数是null的话,那么就用n这个数。转载 2014-03-26 14:52:57 · 1125 阅读 · 0 评论 -
oracle 创建索引 规则 .
一.B-Tree索引: 1. 选项择索引字段的原则: l 在WHERE子句中最频繁使用的字段 l 联接语句中的联接字段 l 选择高选择性的字段(如果很少的字段拥有相同值,即有很多独特值,则选择性很好) l ORACLE在UNIQUE和主键字段上自动建立索引 l 在转载 2014-03-26 10:50:04 · 698 阅读 · 0 评论 -
Oracle中替换like的方法
Oracle中替换like的方法 数据库中存储了海量的数据,当查询时使用like,速度明显变慢。我在做项目时,发现可以使用instr函数来取代like的作用。 www.2cto.com 1.%a%方式: Sql代码 select * from pub_yh_bm t where instr(t.chr_bmdm,'2')>0转载 2014-03-26 13:27:21 · 4171 阅读 · 0 评论 -
oracle导出excel 方法总结
oracle导出excel一、oracle导出excel 方法一:最简单的方法---用工具plsql dev执行File =>newReport Window 。在sql标签中写入需要的sql,点击执行或按快捷键F8,会先吃出查询结果。在右侧工具栏,可以选择按钮另存为html、copy as html、exportresults,其中export results转载 2014-04-18 16:42:26 · 729 阅读 · 0 评论 -
删除数据库中多余的重复项
delete from GOODS_USER_SOURCE a where (a.PRODUCT_NAME_CN,a.TARIFF) in (select PRODUCT_NAME_CN,TARIFF from GOODS_USER_SOURCE group by PRODUCT_NAME_CN,TARIFF having count(*) > 1) a原创 2014-04-18 15:59:53 · 828 阅读 · 0 评论 -
oracle用户被锁定the account is locked的解决办法
用SQL Plus登录时输入:conn scott/tiger给出提示: ERROR: ORA-28000: the account is locked 解决方法:解决:(1)以DBA的身份登录另一个用户,输入: c:> sqlplus sys/test1234 as sysdba(2)为scot转载 2014-04-01 13:50:32 · 2443 阅读 · 0 评论 -
Oracle获取当天,当月,当年的数据
1. 当天 createdtime 参数select? * from tablename t?where where trunc(sysdate)=trunc(t.createdtime);2.当月 createdtime 参数select * from tablename t where t.createdtime>=trunc(SYSDATE, 'MM') and t.转载 2014-09-15 14:42:57 · 1154 阅读 · 0 评论 -
Oracle trunc()函数的用法
--Oracle trunc()函数的用法/**************日期********************/1.select trunc(sysdate) from dual --2011-3-18 今天的日期为2011-3-182.select trunc(sysdate, 'mm') from dual --2011-3-1 返回当月第一天.转载 2014-09-16 11:12:50 · 506 阅读 · 0 评论 -
基本的需求总结
查询页面1.输入项2.输出项3.隐藏的查询条件4.排序规则原创 2014-09-28 10:34:59 · 664 阅读 · 0 评论 -
Oracle中的 UPDATE FROM 解决方法
在表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据。象sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来。虽然只能对一个表进行更新,但是通过将要更新的表与其它的数据源连接起来,就可以在update的表达式中引用要更新的表以外的其它数据。例如:UPDATE Table2SET Table2.ColB = Table2.Co转载 2017-06-05 13:12:12 · 2576 阅读 · 0 评论 -
Oracle Update
在表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据。象sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来。虽然只能对一个表进行更新,但是通过将要更新的表与其它的数据源连接起来,就可以在update的表达式中引用要更新的表以外的其它数据。例如:UPDATE Table2SET Table2.ColB = Table2.Co转载 2016-11-11 16:43:28 · 370 阅读 · 0 评论 -
Oracle 存在 更新 ,不存在插入 Merge into用法总结
起因: 前段时间,因为涉及到一张表的大数据操作,要同时进行增删改,我跟师傅想了很多优化办法,结果都不尽人意。刚开始用的就是原始算法,先更新现有记录,再插入满足要求的其他记录,最后再删除多余记录,但是少量数据还可以,10W条数据就不行了,前台的超时时间是60s,远远无法满足要求。之后又想办法将任务进行拆分,根据每条记录流水号尾字符不同进行拆分,用多个线程同时执行,一直拆分成10个任务(尾字转载 2016-11-11 16:40:46 · 4608 阅读 · 0 评论 -
oracle 查询最近执行过的 SQL语句
oracle 查询最近执行过的 SQL语句select sql_text,last_load_time from v$sql order by last_load_time desc;SELECT sql_text, last_load_time FROM v$sql WHERE last_load_time IS NOT NULL and sql_text like 'sel转载 2016-10-31 11:05:14 · 1309 阅读 · 0 评论 -
Oracle 查看表空间各个物理文件的使用情况
-- 查看表空间文件的使用情况SELECT mAX(B.file_id) id,B.TABLESPACE_NAME 表空间,B.FILE_NAME 物理文件名,B.BYTES / 1024 / 1024 大小M,(B.BYTES - SUM(NVL(A.BYTES, 0))) / 1024 / 1024 已使用M,SUBSTR((B.BYTES - SUM(NV原创 2016-08-11 13:33:42 · 2917 阅读 · 0 评论 -
oracle 时间类型(日期) 转 成英文格式(时间)
select INITCAP(to_char(to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd'),'dd-mon-yyyy','nls_date_language=american')) from dual原创 2016-07-01 11:10:17 · 9361 阅读 · 0 评论 -
ORA-12154: TNS: 无法解析指定的连接标识符
相信使用过Oracle数据库的人一定碰到过“ORA-12154: TNS: 无法解析指定的连接标识符”错误,我在此做一个小小的总结。 在程序中连接Oracle数据库的方式与其他常用数据库,如:MySql,Sql Server不同,这些数据库可以通过直接指定IP的方式连接,但是Oracle则需要通过Oracle客户端配置网络服务名的方式来连接。否则就会出现“ORA-12154: T转载 2015-05-26 14:09:56 · 752 阅读 · 0 评论 -
win7下.NET连接oracle,提示错误OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用
最近三天痛苦了,被oracle和.NET之间的连接头都搞大了,经过不但的安装和找原因,终于搞清楚了一下两点:(1)System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本”(2)System.Exception: OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用。 解决问题一:一连接数据库转载 2015-05-26 14:08:12 · 1527 阅读 · 0 评论 -
Oracle数据库生成UUID
从Data Ghost的blog得知,原来可以用Oracle来生成UUID,做法很简单,如下:select sys_guid() from dual; 数据类型是 raw(16) 有32个字符。转载 2015-05-21 12:43:54 · 1500 阅读 · 0 评论 -
mysql和sqlserver中查看当前库中所有表和字段信息
>>mysql :1、查看所有表名:show tables [from db_name];2、查看字段信息SHOW FULL COLUMNS FROM db_name.table_name 获取以下信息Field :字段名Type:字段类型Collation:字符集(mysql 5.0以上有)Null :是否可以为NULLKey:索引(PRI,uniq转载 2015-03-13 10:44:24 · 1459 阅读 · 0 评论 -
oracle pl/sql中 执行带 OUT 的存储过程
DECLAREV_result1 VARCHAR2(20);V_result2 VARCHAR2(20);BEGIN Proc_GetSeqence('SubtitleNo',V_result1,V_result2); -- Proc_GetSeqence 存储过程名称 有一个传入参数 和 两个输出参数 dbms_output.put_line('V_result1=' || V原创 2014-04-17 10:05:34 · 3326 阅读 · 0 评论 -
Oracle中的 UPDATE FROM 解决方法
在表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据。象sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来。虽然只能对一个表进行更新,但是通过将要更新的表与其它的数据源连接起来,就可以在update的表达式中引用要更新的表以外的其它数据。例如:UPDATE Table2SET Table2.ColB = Table2.Co转载 2014-04-01 11:56:18 · 749 阅读 · 0 评论 -
.net 连接oracle的几种方式
1、OracleClient方式,是微软专门针对Oracle数据库开发的,仅在 .NET Framework 1.1 版中受支持。据说速度快、性能好,是推荐使用的方式。但根据我的经验,当Oracle数据库服务器端采用英文字符集比如 US7ASCII 时,客户端不管字符集如何设置,读出的中文都是乱码;若服务器端用中文字符集比如 ZHS16GBK ,则无乱码问题。 引用类库:System.Dat转载 2013-08-27 17:27:04 · 1174 阅读 · 0 评论 -
通过程序取得oracle数据库中所有表及表结构(包括注释)
如果做表单自定义或做数据库管理软件,就必须能自动取得某个用户下数据库的一些信息。比较有用的有:表名,字段英文名,字段中文名,字段的类型,字段的长度等。其中,字段的中文名按照数据库的记录是无法取到的,但是我们可以变通一下,通过comments去记录字段中文名。//取得该用户下所有的表select * from user_tables;//取得表名为Sysuser的注释信息se转载 2013-05-20 10:33:07 · 878 阅读 · 0 评论 -
oracle 如何获取表的主键列名,如何获取表的所有列名 .
获取表的主键列名 SQL select * from user_cons_columns where constraint_name = (select constraint_name from user_constraints where table_name = 'BST_FAVORITE'转载 2013-05-20 10:45:25 · 1259 阅读 · 0 评论 -
oracle case when的用法
oracle case when的用法 SELECT col1, col2, CASE WHEN col3 > 1 AND col3 THEN '1' WHEN col3 > 2 AND col3 THEN '2' WHEN col3 >转载 2013-04-24 15:22:41 · 889 阅读 · 0 评论 -
Oracle查询所有 表、视图、序列等信息查询
select * from user_tables; select * from user_views; select * from user_sequences; select * from user_triggers; 想查找表的数据条数 试试这个 select t.table_name,t.num_rows from user_ta转载 2013-05-20 11:02:20 · 2197 阅读 · 0 评论 -
浅析Oracle范式的概念
范式:英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的,范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。目前有迹可寻的共有8种范式,依次是:1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF。通常所用到的只是前三个范式,即:第一范式(1NF),第二范式(2NF)转载 2013-01-10 14:24:19 · 446 阅读 · 0 评论 -
Oracle查询表空间使用情况(经典篇)
--查询表空间使用情况 SELECT UPPER(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)", D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)", TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOT转载 2013-01-09 13:16:56 · 494 阅读 · 0 评论 -
oracle用户创建及权限设置
权限: create session create table unlimited tablespace connect resource dba 例: #sqlplus /nolog SQL> conn / as sysdba; SQL>create user username identifie转载 2013-01-09 12:49:55 · 535 阅读 · 0 评论 -
NUMBER ( precision, scale)
precision表示数字中的有效位。如果没有指定precision的话,Oracle将使用38作为精度。 scale表示数字小数点右边的位数,scale默认设置为0. 如果把scale设成负数,Oracle将把该数字取舍到小数点左边的指定位数。转载 2013-01-09 11:36:10 · 823 阅读 · 0 评论 -
oracle数据库连接信息的初始用户名和口令
默认用户有这么几个,system,sys,scott,hr ,一般scott 和hr 作为你的练习用户.system的默认密码是 manager sys的默认密码是 change_on_install 练习用户,oracle 10g 以后需要解锁.使用sys或者system 用户登录以后,使用如下命令解锁,不然你用不了alter user scott identifi转载 2013-01-09 10:20:40 · 3536 阅读 · 0 评论 -
查看ORACLE 数据库信息
-- 查看ORACLE 数据库中本用户下的所有表 SELECT table_name FROM user_tables;-- 查看ORACLE 数据库中所有用户下的所有表 select user,table_name from all_tables;-- 查看ORACLE 数据库中本用户下的所有列 select table_name,column_name from u转载 2013-01-09 10:14:29 · 620 阅读 · 0 评论 -
从Oracle、SQLServer中取得注释
最近在研究根据表结构生成Java文件的工具,在取得表的字段时如何取得表的各种信息和注释,这个问题困扰了我,经多方搜寻找到如下资料备用:Oracle: user_tab_comments;表注释 user_col_comments;表字段注释 以上两个只能获取自己用户的表的注释信息,如果要访问自己能够访问的其他用户的表,则需要使用: all_转载 2013-09-03 09:21:55 · 912 阅读 · 0 评论 -
oracle数据类型与.NET中的对应关系
Oracle连接添加的引用不同,会存在数据类型不同以及其他一些差别,就工作中遇到的问题暂时总结下。两种不同的添加引用语句:(1)System.Data.OracleClient;(2)Oracle.DataAccess.Client;Oracle.DataAccess.Type;采用第二种引用,创建的OracleCommand实例有ArrayBindCoun转载 2013-09-16 15:39:42 · 1045 阅读 · 0 评论