Oracle WMSYS Functions
Oracle WMSYS Functions 2009年09月05日 星期六 16:28 Oracle WMSYS FunctionsVersion 11.2 GENERAL Data Types CREATE OR REPLACE TYPE wm_period AS OBJECT (validfrom TIMESTAMP WITH TIME ZONE,validtill TIMESTAMP WITH TIME ZONE); Security conn / as sysdbaALTER USER wmsys ACCOUNT UNLOCK IDENTIFIED BY wmsys; WM_CONCAT Cross-tabulates a comma delimited list WM_CONCAT(p1 IN VARCHAR2) RETURN VARCHAR2 CREATE TABLE t (col1 VARCHAR2(5)
oracle WMSYS.WM_CONCAT ()
select vin_id,substr(aa,0,19),substr(aa,21,19),substr(aa,41,19) from (select t.vin_id,WMSYS.WM_CONCAT(to_char(t.starttime,'yyyy/mm/dd hh24:mi:ss')) aa from test_call_0906 tgroup by t.vin_id)[@more@]select vin_id,substr(aa,0,19),substr(aa,21,19),substr(aa,41,19) from (select t.vin_id,WMSYS.WM_CONCAT(to_char(t.starttime,'yyyy/mm/dd hh24:mi:ss')) aa from test_call_0906 tgroup by t.vin_id)
SQL养成一个好习惯是一笔财富
SQL养成一个好习惯是一笔财富 作者: MR_ke 来源: 博客园 发布时间: 2011-09-03 22:46 阅读: 2118 次 原文链接 全屏阅读 [收藏] 我们做软件开发的,大部分人都离不开跟数据库打交道,特别是erp开发的,跟数据库打交道更是频繁,存储过程动不动就是上千行,如果数据量大,人员流动大,那么我么还能保证下一段时间系统还能流畅的运行吗?我么还能保证下一个人能看懂我么的存储过程吗?那么我结合公司平时的培训和平时个人工作经验和大家分享一下,希望对大家有帮助。 要知道SQL语句,我想我们有必要知道SQ
“exists”和“in”的效率问题
有两个简单例子,以说明 “exists”和“in”的效率问题 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; T1数据量小而T2数据量非常大时,T1<<T2 时,1) 的查询效率高。 2) select * from T1 where T1.a in (select T2.a from T2) ; T1数据量非常大而T2数据量小时,T1>>T2 时,2) 的查询效率高。 exists 用法: 请注意 1)句中的有颜色字体的部分 ,理解其含义; 其中 “select 1 from T2 where T1.a=T2.a” 相当于一个关联表查询,相当于 “select 1 from T1,T2 where T1.a=T2
oracle sql语句优化(转载)
oracle sql语句优化(转载)博客分类: db SQLOracle数据结构工作oracle sql语句优化(转载)http://www.blogjava.net/killme2008/archive/2007/03/02/101434.html(1) 选择最有效率的表名顺序 ( 只在基于规则的优化器中有效 ) : ORACLE 的解析器按照从右到左的顺序处理 FROM 子句中的表名, FROM 子句中写在最后的表 ( 基础表 driving table) 将被最先处理,在 FROM 子句中包含多个表的情况下 , 你必须选择记录条数最少的表作为基础表。如果有 3 个以上的表连接查询 , 那就需要选择交叉表 (intersection table) 作为基础表 , 交叉
oracle 表连接基础知识
[@more@]
关于 分布式oracle中 database link 我的一点经验
[原创] 关于 分布式oracle中 database link 我的一点经验 http://www.chinaunix.net 作者:cugdxp 发表于:2009-01-23 10:01:59 【发表评论】【查看原文】【Oracle讨论区】【关闭】 关于 分布式oracle中 database link 我的一点经验 在做分布式数据库时难免用到dblink,但关于dblink的资料很少,很多书上提到了,但不详细。我在实际应用中总结了一点经验,现在贴出来,大家共同讨论。 数据库链接定义从一个Oracle数据库到另一个数据库的单行通信通道。 建立链接前要先有到远程数据库的命名服务(
ORACLE 本地数据库存储过程 调用远程数据库存储过程
步骤1:建立一个远程数据库的连接服务名 D:oracleora92networkadmintnsnames.ora 添加如下代码:Java代码 SDEC = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.254)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = DEC) ) ) SDEC = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.254)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = DEC) ) ) 步骤2:本地数据库建立一个db
Oracle建立DBLINK的详细步骤记录
Oracle建立DBLINK的详细步骤记录博客分类: Oralce SQLOracle脚本SQL Server防火墙测试条件:假设某公司总部在北京,新疆有其下属的一个分公司。在本次测试中,新疆的计算机为本地计算机,即本要的IP地址为:192.168.1.100 北京的总部有一个集中的数据库,其SID是SIDBJ,用户名:userbj,密码:bj123,北京的IP地址是:192.168.1.101。在本地(新疆)的分公司也有一个数据库,其SID是SIDXJ,用户:userxj,密码:xj123,新疆的IP地址是:192.168.1.100。要将本地新疆的SIDXJ数据库中访问到北京的数据库SIDBJ中的数据。也就是说,在sidxj的数据
oracle job 定时执行 存储过程
oracle job 定时执行 存储过程一:简单测试job的创建过程案例: 1,先创建一张JOB_TEST表,字段为a 日期格式SQL> create table JOB_TEST(a date);Table createdSQL> commit;Commit complete2,创建一个存储过程 bb 作用是往pig表中插入数据SQL> create or replace procedure JOB_PRO_TEST as 2 begin 3 insert into JOB_TEST values(sysdate); 4 end; 5 /Procedure created 3,创建一个job,名称为job2010 ;作用是每分钟(60×24=1440)执行一次存储过程JOB_PRO_TEST。SQL> variable job2010 number;SQL> begi
Oracle通过job定时创建表-入门基础(转载)
Oracle通过job定时创建表-入门基础(转载)2010-08-30 11:44在项目中,经常会遇到需要定时完成的任务,比如定时更新数据,定义统计数据生成报表等等,其实这些事情都可以使用Oracle的Job来完成。下面就结合我们实验室项目实际,简单介绍一下在Oracle数据库中通过Job完成自动创建表的方法。 整个过程总共分为两步。虽然整个过程都非常简单,但是对于初学Oracle的生手还是有很多地方需要注意的。 首先介绍一下,创建该JOB的背景,因为每天更新的直播和点播节目信息比较多,为了方便处理,需要每天创建一张表来记录更新的节目信息,当
数据字典
select * from dictionary; --数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的。 比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息等。 数据库数据字典是一组表和视图结构。它们存放在SYSTEM表空间中 当用户在对数据库中的数据进行操作时遇到困难就可以访问数据字典来查看详细的信息。 用户可以用SQL语句访问数据库数据字典。 数据字典内容包括: 1,数据库中所有模式对象的信息,如表、视图、簇、及索引等。 2,分
创建oracle数据库连接(database link)的两种方法
oracle 数据库连接就像你在程序中建立一个到数据库的连接一样。如果数据库不在本地主机,必须在$ORACLEHOME/network/admin/tnsnames.ora中配置相应的tns,然后程序才能通过配置好的tns访问数据库,但是java通过thin方式访问oracle例外,可以采用在本地配置好的tns别名,也可以采用tns全解析名,采用别名等号后的全描述符;如下:TESTCZ = (DESCRIPTION = (ADDRESSLIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.70.9.12)(PORT = 1521)) ) (CONNECTDATA = (SERVICENAME = TESTCZ) ) )举例。现在有两个数据库adb,用户名和密码分别是adb/a
通过一个实际的例子学习Oracle存储过程
--创建存储过程CREATE OR REPLACE PROCEDURE xxxxxxxxxxx_p(--参数IN表示输入参数,OUT表示输入参数,类型可以使用任意Oracle中的合法类型。 is_ym IN CHAR)AS--定义变量 vs_msg VARCHAR2(4000); --错误信息变量 vs_ym_beg CHAR(6); --起始月份 vs_ym_end CHAR(6); --终止月份 vs_ym_sn_beg CHAR(6); --同期起始月份 vs_ym_sn_end CHAR(6); --同期终止月份--定义游标(简单的说就是一个可以遍历的结果集) CURSOR cur_1 IS SELECT area_code,CMCODE,SUM(rmb_amt)/10000 rmb_amt_sn,SUM(usd_amt)/10000 usd_amt_sn
ORACLE学习笔记--基本select语句、函数、多表关联
ORACLE学习笔记--基本select语句、函数、多表关联select name,age from users;select name,age from users where age>20;select a.name,a.age,b.sex,b.pay from users a,salary b where a.name=b.name;select * from users;select 语句不区分大小写,可以跨行。关键字不可以简写和跨行。字符和日期列居左,数字列居右。+ - * /运算,有()改变优先级select age+5 from users;null与任何值运算都为null定义别名select name as xingming from users;用双引号不改变别名大小写和空格select name "XINGMING" from users;连接字符
ORACLE 日期函数 ADD_MONTHS
格式:ADD_MONTHS(DATE,NUMBER) 即ADD_MONTHS(日期,数字) ADD_MONTHS函数在输入日期上加上指定的几个月返回一个新的日期。如果给出一负数,返回值日期之前几个月日期。 ADD_MONTHS(DATE,NUMBER)中的NUMBER应当是整数,给出小数时,正数被截为小于该数的最大整数,负数被截为大于该数的最小整数。 例:add_months(to_date('29-Feb-96','d-mon-yyyy'),-12.99) 返回 28-Feb-95注:上例中29调整为28,是因为96年二月份最后一天是29号,而95年二月份最后一天是28号。 add_months(to_date('15-Nov-1961','d-mon-yyyy'),1) 返回 15-Dec
distinct这个关键字
distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用 它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。下面先来看看例子:table表字段1 字段2 id name 1 a 2 b 3 c 4 c 5 b库结构大概这样,这只是一个简单的例子,实际情况会复杂得多。比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的
Oracle 经典函数
ORACLE经典函数库2010/05/17 15:19 [技术(ORACLE) ] Oracle已经内建了许多函数,不同的函数有不同的作用和用法,有的函数只能作用在一个记录行上,有的能够作用在多个记录行上,不同的函数可能处理不同的数据类型。常见的有两类,单行函数和分组函数 。单行函数:单行函数分类函数功能示例字符函数LPAD(<c1>,<i>[,<c2>])在字符串c1的左边添加字符串c2直到c1字符串的长度等于i。SELECT LPAD(‘Hello!’,8,’ ’) leftpad,RPAD(‘Hello!’,8,’ ’) rightpadFROM DUAL; RPAD(<c1>,<i>[,<c2>])在
ORACLE语法中的INSERT INTO。。。SELECT。。。 收藏
ORACLE语法中的INSERT INTO。。。SELECT。。。 收藏 今天写INSERT语句,想直接把一表里的数据取出直接插进另外一表。结果语法忘记了。找了半天。真是白痴啊自己,先把找到的语法记录下来吧。。。set feedback off;set pagesize 0; create table foo (a number, b varchar(10), c varchar(10)); insert into foo values ( 15, 'abc','def' );insert into foo values (998, 'max','min' );insert into foo values ( 7, 'bla','bla' );insert into foo values (632, 'now','then'); insert into foo (a,b,c) (select
oracle怎样修改表名、列名、字段类型、添加表列、删除表列
oracle怎样修改表名、列名、字段类型、添加表列、删除表列 一, 你可以先把类型为varchar的字段该名,再加以个字段为要该为date的字段名相同, 二, 1,测试表create table TEST(ID NUMBER not null,NAME VARCHAR2(20))ALTERTABLESCOTT.TESTRENAMETOTEST1--修改表名ALTERTABLESCOTT.TESTRENAMECOLUMNNAMETONAME1 --修改表列名ALTERTABLESCOTT.TESTMODIFYNAME1NUMBER(20) --修改字段类型ALTERTABLESCOTT.TESTADDADDRESSVARCHAR2(40) --添加表列ALTERTABLESCOTT.TESTDROPNAMECASCADECONSTRAINTS --删除表列 三,