??xml version="1.0" encoding="utf-8" standalone="yes"?>一二三区精品,黄动漫在线免费观看,高清色视频在线观看http://www.aygfsteel.com/hwpok/category/27104.htmlDEBUG - 天道酬勤zh-cnTue, 27 May 2014 08:43:40 GMTTue, 27 May 2014 08:43:40 GMT60Oracle Data Guard Linux q_ Physical Standby 搭徏实例()http://www.aygfsteel.com/hwpok/archive/2014/05/26/414117.html惠万?/dc:creator>惠万?/author>Mon, 26 May 2014 05:49:00 GMThttp://www.aygfsteel.com/hwpok/archive/2014/05/26/414117.htmlhttp://www.aygfsteel.com/hwpok/comments/414117.htmlhttp://www.aygfsteel.com/hwpok/archive/2014/05/26/414117.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/414117.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/414117.html阅读全文

]]>
oracle 扚w更新http://www.aygfsteel.com/hwpok/archive/2013/01/07/393904.html惠万?/dc:creator>惠万?/author>Mon, 07 Jan 2013 05:14:00 GMThttp://www.aygfsteel.com/hwpok/archive/2013/01/07/393904.htmlhttp://www.aygfsteel.com/hwpok/comments/393904.htmlhttp://www.aygfsteel.com/hwpok/archive/2013/01/07/393904.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/393904.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/393904.html在大型的数据库应用中Q我们经怼有针对表与表之间的关键徏q行字段更新Q那么在q个时候,我们׃能写单的update来实现更新操作,而要针对具体的数据量来进行批量的update,下面几个例子是常用的SQL,其做个ҎQ欢q大家提出更好,更高效的SQL实现?/p>


数据库:Oracle 9i  试工具QPL/SQL

定义2张测试表QT1,T2
T1--大表 10000?T1_FK_ID
T2--表 5000?nbsp; T2_PK_ID
T1通过表中字段ID与T2的主键ID兌


模拟数据如下Q?br />

--T2?000条记?br />create table T2 as select rownum id, a.* from all_objects a where 1=0;
//T2表的字段和all_objects表字D늱型以及默认g_但烦引初始化了,需要重新设|?br />
--创徏主键ID,向T2表copy数据
alter table T2 add constraint T2_PK_ID primary key (ID);
insert into T2 select rownum id, a.* from all_objects a where rownum<=5000;
 
--T1?0000条记?nbsp;         
create table T1 as select rownum sid, T2.* from T2 where 1=0;

-- 创徏外键ID,向T1表copy数据
alter table T1 add constraint T1_FK_ID foreign key (ID) references t2 (ID);
insert into T1 select rownum sid, T2.* from T2;
insert into T1 select rownum sid, T2.* from T2;

--更新Subobject_Name字段Q初始ؓNULL
update T2 set T2.Subobject_Name='StevenHuang'


需求:我们希望能把T1表的Subobject_Name字段也全部更新成'StevenHuang'Q也是说T1?0000条记录都会得到更斎ͼ以下SQL语句均在PL/SQL命oH口试?br />
Ҏ一:
写PL/SQL,开cursor

declare 
 l_varID 
varchar2(20
);
 l_varSubName 
varchar2(30
);
 
cursor mycur is select T2.Id,T2.Subobject_Name from
 T2;
begin
 
 
open
 mycur; 
 loop
      
fetch mycur into
 l_varID,l_varSubName;
      
exit when mycur %
notfound;
      
update T1 set T1.Subobject_Name = l_varSubName where T1.ID =
 l_varID;
 
end
 loop;
 
close
 mycur;
end;

---耗时39.716s
昄q是最传统的方法,如果数据量巨大的话(4000万记Q,q会?#8221;snapshot too old”错误退?PL/SQL工具会挂?br />
Ҏ?
用loop循环Q分批update

declare 
  
number
;
  
number
;
begin

  :
= 1;
  :
= 0
;
select count(*into from
 T1;
  loop
    
exit when >
 j;
    
update T1 set T1.Subobject_Name = (select T2.Subobject_Name from T2 where T1.ID = T2.ID) where T1.ID >= and T1.ID <
 

(i 
+ 1000
);
    :
= + 1000
;
  
end
 loop;
end
;

--耗时0.656sQ这里一共@环了10ơ,如果数据量巨大的话,虽然能够完成dQ但是速度q是不能令h满意?例如我们T1--大表增大?00000记录 T2--表增大?0000记录,耗时10.139s)

Ҏ?
--虚拟一张表来进行操作,在数据量大的情况下效率比Ҏ二高很多.
   注:此语句下T1,T2表中必须有相应的d建关联,否则sql~译不能通过.

update (select T1.Subobject_Name A1,T2.Subobject_Name B1 from T1,T2 where T1.ID=T2.ID) set A1=B1; 

--耗时3.234s (T1--大表增大?00000记录 T2--表增大?0000记录)
*以上所有操作都已经分析执行计划所需的时间排除在?/p>

]]>
PL/SQL中SELECT INTO无记录的情况http://www.aygfsteel.com/hwpok/archive/2012/12/25/393477.html惠万?/dc:creator>惠万?/author>Tue, 25 Dec 2012 11:40:00 GMThttp://www.aygfsteel.com/hwpok/archive/2012/12/25/393477.htmlhttp://www.aygfsteel.com/hwpok/comments/393477.htmlhttp://www.aygfsteel.com/hwpok/archive/2012/12/25/393477.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/393477.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/393477.htmlSELECT AMOUNT
  INTO l_Amount
  FROM T1
WHERE...
条g比较长,省略。可以保证最多只有一条相W结果?
无记录的时候,xl_Amount设ؓ0?

Z应付无记录的情况Q想了以下这些写法:

W?U,先检查g敎ͼ
SELECT COUNT(*) INTO l_Cnt 以下省略
IF l_Cnt > 0 THEN
    SELECT AMOUNT INTO l_Amount 以下省略
END IF;


W?U,用exceptionQ?
FUNCTION GETAMOUNT RETURN NUMBER
IS l_Ret BEGIN SELECT AMOUNT INTO l_Ret 以下省略
RETURN l_Ret
WHEN NO_DATA_FOUND THEN RETURN 0 END;


W?U,用UNIONQ?
SELECT AMOUNT
  INTO l_Amount
  FROM
( SELECT AMOUNT
  FROM T1
WHERE...
UNION ALL
  SELECT 0 FROM DUAL
)
  WHERE rownum <=1;


W?U,用NVL函数Q?
SELECT NVL(MAX(AMOUNT), 0)因ؓ最多就一条记录,MAX,MIN之类的函数都可以
  INTO l_Amount
  FROM T1
WHERE...


]]>
windows环境下Oracle数据库冷备䆾和恢复全q程 http://www.aygfsteel.com/hwpok/archive/2012/09/28/388798.html惠万?/dc:creator>惠万?/author>Fri, 28 Sep 2012 10:05:00 GMThttp://www.aygfsteel.com/hwpok/archive/2012/09/28/388798.htmlhttp://www.aygfsteel.com/hwpok/comments/388798.htmlhttp://www.aygfsteel.com/hwpok/archive/2012/09/28/388798.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/388798.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/388798.html1.点击开始菜单的“q行”Q输入sqlpluslog 
2.在弹出的命o行窗口以sysdbaw䆾登陆Q要输入:pȝ用户?登陆密码@数据库实例名Q如sys/testora@orcl
3.输入 alter database backup controlfile to trace resetlogsQ然后在D:\oracle\product\10.1.0\admin\orcl\udump下找?/div>
刚执行语句创建的文gQ把下面q一D复制出来:
STARTUP NOMOUNT
CREATE CONTROLFILE SET DATABASE "ORCL" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 454
LOGFILE
  GROUP 1 'D:\oracle\product\10.1.0\ORADATA\ORCL\REDO01.LOG'  SIZE 10M,
  GROUP 2 'D:\oracle\product\10.1.0\ORADATA\ORCL\REDO02.LOG'  SIZE 10M,
  GROUP 3 'D:\oracle\product\10.1.0\ORADATA\ORCL\REDO03.LOG'  SIZE 10M
DATAFILE
  'D:\oracle\product\10.1.0\ORADATA\ORCL\SYSTEM01.DBF',
  'D:\oracle\product\10.1.0\ORADATA\ORCL\UNDOTBS01.DBF',
  'D:\oracle\product\10.1.0\ORADATA\ORCL\SYSAUX01.DBF',
  'D:\oracle\product\10.1.0\ORADATA\ORCL\USERS01.DBF',
  'D:\oracle\product\10.1.0\ORADATA\ORCL\USERS02.DBF',
  'D:\oracle\product\10.1.0\ORADATA\ORCL\TOOLS01.DBF'
CHARACTER SET ZHS16GBK;
4.输入shutdown immediate停掉当前数据库实例?br />
5.D:\oracle\product\10.1.0\db_1\database文g夹和W?步显C的那些LOGFILE和DATAFILE文g?D:\oracle\product\10.1.0\ORADATA\里的控制文g都复制出来?/div>
6.停掉新的数据库实例(新数据库实例与源数据库实例同名)Q将W?步复制的文g和文件夹覆盖新的数据库安装文件夹下的相对
应的文g和文件夹?br />
7.如果新数据库实例的安装目录和源数据库实例的安装目录不同则需要将W?步复制的那一D修改ؓ和新数据库实例相W的路径Q?/div>
q在sqlplus中以sys用户登陆执行q段语句Q至此备份恢复完毕?/div>


]]>oracle10g数据库冷备䆾、恢复的具体步骤(?http://www.aygfsteel.com/hwpok/archive/2012/09/27/388672.html惠万?/dc:creator>惠万?/author>Thu, 27 Sep 2012 03:16:00 GMThttp://www.aygfsteel.com/hwpok/archive/2012/09/27/388672.htmlhttp://www.aygfsteel.com/hwpok/comments/388672.htmlhttp://www.aygfsteel.com/hwpok/archive/2012/09/27/388672.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/388672.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/388672.html数据库冷备䆾、恢复的具体步骤Q实例讲解)Q?br />需求:现在A及机器上的oracle10g数据库全部{UdB机器上,注意QA机器上的数据库很大(用户、表I间以及数据很庞大)

冷备份:
1、在A机器上用shutdown immediat;命o数据库停掉?br />2、最关键的一?copy文g)。将数据文g、重做日志文件、控制文件等、密码文件全部copy出来Q根据个人的相关l验q些文g基本上在oradata下,所以把oradata全部copy卛_Q还有数据文件、密码文件一般是在db_1下的database下,所以要把database文g夹全部copy?br />3、将A机器上的注册文g全部导出。在window的命令行输入regeditq入windows的注册文件界面,点击文g展开菜单点击导出卛_导出注册文g?br />Q冷备䆾完成Q接下来恢复)

恢复Q?br />1、在B机器上最好装与A机器相同的数据库l构Q包括sid、口令、所装的路径{(本例只将A和B数据库结构一P若不一样只需要改变控制文仉的\径即可)
2、将B机器上的oracle10g同样用shutdown immediat;停掉同时服务全部停掉Q避免覆盖的时候出错)
3、将备䆾的oradata全部覆盖B机器上的oradataQ同时也备份database全部覆盖B机器上的db_1下的
database文g夏V将导出的注册文件导入到B机器上(具体怎么导给导出是一LQ?br />4、启动oracle10g的服务,在dos下用sqlplus "/as sysdba" q入导oracle同时用startup重新启动oracle数据库,当出现加载数据库实例完成ok了?/p>

完工

注:冷备份常用于数据库的全库q且数据较庞大时的移植、备份等。一般用imp和exp或是DPimp和DPexp命oq行备䆾和恢复(DPimp和DPexp命o是oracle10g出现的新用法Q其实和imp和exp用法基本一P到google一搜很多)?/p>



]]>oracle 正则 匚w中文http://www.aygfsteel.com/hwpok/archive/2012/04/07/373547.html惠万?/dc:creator>惠万?/author>Sat, 07 Apr 2012 12:08:00 GMThttp://www.aygfsteel.com/hwpok/archive/2012/04/07/373547.htmlhttp://www.aygfsteel.com/hwpok/comments/373547.htmlhttp://www.aygfsteel.com/hwpok/archive/2012/04/07/373547.html#Feedback1http://www.aygfsteel.com/hwpok/comments/commentRss/373547.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/373547.html
  • [\u2E80-\u9FFF]+$    匚w所有东亚区的语a   
  • [\u4E00-\u9FFF]+$     匚w体和J体    
  • [\u4E00-\u9FA5]+$     匚w?nbsp;


  • ]]>
    PowerDesigner讄http://www.aygfsteel.com/hwpok/archive/2012/01/11/368323.html惠万?/dc:creator>惠万?/author>Wed, 11 Jan 2012 07:32:00 GMThttp://www.aygfsteel.com/hwpok/archive/2012/01/11/368323.htmlhttp://www.aygfsteel.com/hwpok/comments/368323.htmlhttp://www.aygfsteel.com/hwpok/archive/2012/01/11/368323.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/368323.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/368323.htmlsql语句中表名与字段名前的引号去除:

    打开cdm的情况下Q进入ToolsQModel OptionsQNaming ConventionQ把Name和Code的标{Charcter case选项讄成Uppercase或者LowercaseQ只要不是Mixed CasepQ?br />或者选择Database->Edit current database->Script->Sql->FormatQ有一CaseSensitivityUsingQuoteQ它?comment?#8220;Determines if the case sensitivity for identifiers is managed using double quotes”Q表C是否适用双引h规定标识W的大小写, 可以看到双的values默认gؓ“YES”,改ؓ“No”卛_Q?br />或者在打开pdm的情况下Q进入ToolsQModel OptionsQNaming ConventionQ把Name和Code的标{Charcter case选项讄成Uppercase可以!

     

    在修改name的时候,code的值将跟着变动Q很不方?/strong>

    修改ҎQPowerDesign中的选项菜单里修改,在[Tool]-->[General Options]->[Dialog]->[Operating modes]->[Name to Code mirroring],q里默认是让名称和代码同步,前面的复选框Lp了?br />
     

    由pdm生成脚本Ӟ字段过15字符发生错误(oracleQ?/strong>

      原因未知Q解军_法是打开PDM后,会出现Database的菜单栏Q进入Database Q?Edit Current DBMS QscriptQobjectsQcolumnQmaxlenQ把valueD?原ؓ30)Q比如改?0。出现表或者其它对象的长度也有q种错误的话都可以选择对应的objects照此U方法更改!
    或者用下面的q种ҎQ?br />     生成脚本时会弹出Database generation提示框:把options Q?check model的小勄LQ就是不q行查(不推荐)Q?br />    或者可以修改C:\Program Files\Sybase\PowerDesigner Trial 11\Resource Files\DBMS\oracl9i2.xdb文g
         修改好后Q再cdm转ؓpdmӞ选择“Copy the DBMS definition in model”把把q个资源文g拯到模型中?br />
     

    由CDM生成PDMӞ自动生成的外键的重命?/strong>

    PDM Generation Options->Detail->FK index names默认?REFR%_FKQ改为FK_%REFRCODE%Q其?REFRCODE%指的是CDM中Relationship的codeQ另外自动生成的父字D늚规则是PDM Generation Options->Detail->FK column name template中设|的Q默认是%.3:PARENT%_%COLUMN%Q可以改为Par%COLUMN%表示是父字段Q?br />
     

     建立一个表?Z出现Existence of index的警?/strong>
        A table should contain at least one column, one index, one key, and one reference.
    可以不检?Existence of index q项Q也没有这个警告错误了Q?br />意思是说没有给表徏立烦引,而一个表一般至要有一个烦引,q是一个警告,不用也没有关系Q?br />
     

    如何防止一对一的关pȝ成两个引用(外键Q?/strong>
    要定义关pȝ支配方向Q占支配C的实体(有D标志Q变为父表?br />在cdm中双M对一关系->Detail->Dominant role选择支配关系

     

    修改报表模板中一些术语的定义
    xӞC:\Program Files\Sybase\PowerDesigner Trial 11\Resource Files\Report Languages\Chinese.xrl
    ToolsQResourcesQReport LanguagesQ选择ChineseQ单击Properties或双ȝ?br />修改某些对象的名UͼObject Attributes\Physical Data Model\Column\
            ForeignKeyQ外?br />        MandatoryQؓI?br />        PrimaryQ主?br />        TableQ表
    用查找替换,?#8220;表格”替换?#8220;?#8221;
    修改昄的内容ؓ别的QValues Mapping\Lists\StandardQ添加TRUE的{化列为是QFALSE的{化列为空
    另外ReportQTitle Page里可以设|标题信?br />
     

    PowerDesigner11中批量根据对象的name生成comment的脚?/strong>

    '******************************************************************************
    '* File:     name2comment.vbs
    '* Purpose:  Database generation cannot use object names anymore
    '            in version 7 and above.
    '            It always uses the object codes.
    '
    '            In case the object codes are not aligned with your
    '            object names in your model, this script will copy
    '            the object Name onto the object comment for
    '            the Tables and Columns.
    '
    '* Title:    把对象name拷入comment属性中
    '* Version:  1.0
    '* AuthorQ?br />'* 执行ҎQPD11 -- Open PDM -- Tools --  Execute Commands -- Run Script
    '******************************************************************************

    Option Explicit
    ValidationMode = True
    InteractiveMode = im_Batch

    Dim mdl ' the current model

    ' get the current active model
    Set mdl = ActiveModel
    If (mdl Is Nothing) Then
       MsgBox "There is no current Model"
    ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then
       MsgBox "The current model is not an Physical Data model."
    Else
       ProcessFolder mdl
    End If

    ' This routine copy name into code for each table, each column and each view
    ' of the current folder
    Private sub ProcessFolder(folder)
       Dim Tab 'running  table
       for each Tab in folder.tables
          if not tab.isShortcut then
             tab.comment = tab.name
             Dim col ' running column
             for each col in tab.columns
                col.comment= col.name
             next
          end if
       next

       Dim view 'running view
       for each view in folder.Views
          if not view.isShortcut then
             view.comment = view.name
          end if
       next

       ' go into the sub-packages
       Dim f ' running folder
       For Each f In folder.Packages
          if not f.IsShortcut then
             ProcessFolder f
          end if
       Next
    end sub

     

    PowerDesigner 生成SQL的Existence of refernce错误问题
    现象Q用PowerDesigner生成SQL语句Ӟ提示Existence of refernce错误?br />原因Q该表没有与其他表的兌(如外键等Q,而PowerDesigner需要存在一个refernce才能生成SQL.
    解决ҎQ?br />    在工hI白处右键打开Palette面板Q选中Link/Extended Dependency 按钮Q然后在提示出错的表上添加到自己的Dependency?br />    重新生成SQL,你将发现刚才提示的错误没有了Q问题解冟?br />  
    利用PowerDesigner扚w生成试数据
    主要解决Ҏ:
    A:在PowerDesigner
    B:然后l每一个表的字D徏立相应的摘要文g
    步骤如下:
    Model->Test Data Profiles配置每一个字D|要文件General:输入Name、Code?br />选择Class(数字、字W、时?cd
    选择Generation SourceQ?Automatic、List、ODBC、File Detail:配置字段相关信息
    所有字D|要文仉|完成后双击该表->选择字段->Detail->选择Test Data Parameters 摘要文g如果字段g其它字段有关pd: Computed Expression 中输入计列--生成试数据:
    DataBase->Generation Test Data->
    选择:Genration cd(Sript、ODBC)
         Selection(选择要生成的?
         Test Data Genration(Default number of rows 生成记录行数)


    ]]>SQLPLUS SPOOL命o使用http://www.aygfsteel.com/hwpok/archive/2012/01/05/367972.html惠万?/dc:creator>惠万?/author>Thu, 05 Jan 2012 15:24:00 GMThttp://www.aygfsteel.com/hwpok/archive/2012/01/05/367972.htmlhttp://www.aygfsteel.com/hwpok/comments/367972.htmlhttp://www.aygfsteel.com/hwpok/archive/2012/01/05/367972.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/367972.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/367972.htmlSPOOL?/span>SQLPLUS的命?必须在SQLPLUS中用,主要完成以标准输出方式输出SQLPLUS的命令及执行l果Q一般常用户格式化导出ORACLE表数据?br />

    对于SPOOL数据?/span>SQLQ最好要自己定义格式Q以方便E序直接导入,SQL语句如:
    select taskindex||'|'||commonindex||'|'||tasktype||'|'||to_number(to_char(sysdate,'YYYYMMDD')) from sys_user;

    spool常用的设|?/span>

    set colsep' ';    //域输出分隔符

    set echo off;    //start启动的脚本中的每?/span>sql命oQ缺省ؓon

    set feedback off;  //回显本次sql命o处理的记录条敎ͼ~省?/span>on

    set heading off;   //输出域标题,~省?/span>on

    set pagesize 0;   //输出每页行数Q缺省ؓ24,Z避免分页Q可讑֮?/span>0?/span>

    set termout off;   //昄脚本中的命o的执行结果,~省?/span>on

    set trimout on;   //去除标准输出每行的拖|~省?/span>off

    set trimspool on;  //去除重定向(spoolQ输出每行的拖尾I格Q缺省ؓoff


    sqlplus -s username/password@sid
    set trimspool on;
    set linesize 120;
    set pagesize 2000;
    set newpage 1;
    set heading off;
    set term off;
    spool sys_user.txt;
    select col1||','||col2||','||col3||','||col4||'..' from sys_user;
    spool 
    off;
    exit;


    ]]>
    Oracle执行SQL旉遇特D字W?amp;http://www.aygfsteel.com/hwpok/archive/2011/12/31/367677.html惠万?/dc:creator>惠万?/author>Sat, 31 Dec 2011 13:38:00 GMThttp://www.aygfsteel.com/hwpok/archive/2011/12/31/367677.htmlhttp://www.aygfsteel.com/hwpok/comments/367677.htmlhttp://www.aygfsteel.com/hwpok/archive/2011/12/31/367677.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/367677.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/367677.html

    ]]>
    oracle及操作系l对于文件大的限制http://www.aygfsteel.com/hwpok/archive/2011/12/28/367449.html惠万?/dc:creator>惠万?/author>Wed, 28 Dec 2011 12:43:00 GMThttp://www.aygfsteel.com/hwpok/archive/2011/12/28/367449.htmlhttp://www.aygfsteel.com/hwpok/comments/367449.htmlhttp://www.aygfsteel.com/hwpok/archive/2011/12/28/367449.html#Feedback1http://www.aygfsteel.com/hwpok/comments/commentRss/367449.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/367449.html文gpȝ:
        FAT12 单文件最大支?M
        Fat16单文件最大支?G
        Fat32单文件不能大?G
        NTFS单文件最?4GB
        NTFS5.0单文件最?TB

        Ext2
            最大文件大? 1TB
            最大文件极? 仅受文gpȝ大小限制
            最大分?文gpȝ大小: 4TB
            最大文件名长度: 255 字符
            ~省最?最大块大小: 1024/4096 字节
            ~省inode分配: ?096字节?
            在强制FS查前的最大装? 20(可配|?
            //REDHAT9默认是ext3的文件系l?br />    Ext3
            最大文件大? 1TB
            最大文件极? 仅受文gpȝ大小限制
            最大分?文gpȝ大小: 4TB
            最大文件名长度: 255 字符
            ~省最?最大块大小: 1024/4096 字节
            ~省inode分配: ?096字节?
            在强制FS查前的最大装? 20(可配|? 

        ReiserFS
            最大文件大? 1TB
            最大文件极? 32k目录,42亿文?br />        最大分?文gpȝ大小: 4TB
            最大文件名长度: 255 字符

        JFS
            最文件系l大?16 MB
            最大文件大? 受体pȝ构限?br />        最大文件极? 受文件系l大限?br />        ~省最?最大块大小: 1024/4096 字节
            ~省inode分配: 动?/div>

    oracle 数据?
        Oracle数据文g的大存在一个内部限Ӟq个限制是:
        每个数据文g最多只能包?^22-1个数据块.
        q个限制也就直接D了每个数据文件的最大允许大?br />    ?K Block_size下,数据文g最大只能达到约8G
        ?2K的Block_size下,数据文g最大只能达到约16*8G的大?/span>

        q个限制是由于Oracle?span style="color: #0000ff">Rowid中?strong>22位来代表BlockPq?2位最多只能代?^22-1个数据块

        Z扩展数据文g的大,Oracle10g中引入了大文表空_在大文g表空间下QOracle使用32位来代表BlockP也就是说Q在新的技术下Q大文g表空间下每个文g最多可以容U?G个Block?br />    那么也就是说当Block_size?kӞ数据文g可以辑ֈ8T ?br />    当block_size?2KӞ数据文g可以辑ֈ128T?/span>



    ]]>oracle 表空间设|的问题(?http://www.aygfsteel.com/hwpok/archive/2011/12/28/367440.html惠万?/dc:creator>惠万?/author>Wed, 28 Dec 2011 09:43:00 GMThttp://www.aygfsteel.com/hwpok/archive/2011/12/28/367440.htmlhttp://www.aygfsteel.com/hwpok/comments/367440.htmlhttp://www.aygfsteel.com/hwpok/archive/2011/12/28/367440.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/367440.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/367440.html以下的文章主要是对Oracle表空间的讄问题的描qͼ我们大家都知道Oracle数据库中的表很多Q一q?00多个表,大概你能占十几个GI间。下面的文章主要讲述的是Oracle表空间设|:

      是设|在USERS表空间内建立一个十几G的数据文件USERS01.DBF呢?

      q是在USERS表空间内建立三个几G的数据文件USERS01.DBF,USERS02.DBF,USERS03.DBFQ?/p>

      Oracle表空间内的数据文件以多大上限最好?是越大的单个文g好呢Q还是小一点的多个文g好?以什么ؓ原则Q?/p>

      Oracle数据库生许多碎片怎么办?存储数据文g的这个盘W,可以定期?#8220;盘片整理”吗?该怎么做?要不要先把数据库x再做Q?/p>

      两个数据库同时运行在一个服务器上面Qؓ两套业务pȝ服务Q?/p>

      两个数据库共用一个对外端?521合理吗?会不会媄响数据吞吐性能Q要不要一个用1521端口Q一个用1520端口Q开两个监听E序q样讄Q?/p>

      1。分成多个数据文件?/p>

      原因是:

      Q?Q有些操作系l对文g大小有限Ӟ或者安装是做过限制。你不一定清楚这些限制。而且某些版本的传输协议不支持q大的文Ӟ例如AIX某版本的sftp׃允许传输文g过2G?/p>

      Q?Q你现在数据量小Q所以不用考虑太多。但来数据量增大以后,要考虑负蝲均衡Q就要把部分数据文g挪到其他盘上。多个数据文件会使这样很Ҏ?/p>

      Q?Q当你的数据文g某部分出现坏块之后,你需要让某个数据文g暂时offline恢复{等Q如果你的数据文件过大,影响也可能更大?/p>

      Q?Q用RMAN备䆾的时候,单独备䆾数据文g。恢复也可单独恢复,因此很显然分多个数据文g有好处?/p>

      2。单个数据文件的大小Q这个要考虑的东西比较多。比如你的存储性能Q比如你的L据量Q等{。专家的是,对于几十G到几百G的数据量Q单个数据文件的大小一般在2Q?0G。原则有一套理明的Q但是我忘了Q只说一下个人的Q?/p>

      Q?Q操作系l限制。这个如果没有注意到很容易出问题Q特别是自扩展的数据文gQ例如systemQundotbs{等

      Q?QOracle表空间的大小。要考虑单个数据文gUd或恢复的情况。显然如果对于几十个G的表I间Q就分成两个数据文gQƈ不能对你的操作带来什么好处?/p>

      Q?Q全凭经验把握的东西Q还要考虑的你盘的raid情况{等。情冉|较复杂,只能折衷。不能简单的一概而论说大好或者小好?/p>

      当然qƈ不是主要的,你没必要太关注这斚w的东ѝ因为对于你q样的简单环境来_区区一个表I间数据文g大小的修改,Ҏ能的提高甚至不如多Z条烦引大Q?/p>

      3。数据库产生片怎么办。我告诉你,数据库的片和windows说的那个片整理是两码事Q你不要h。windows再怎么整理也是没用的?/p>

      其实我坦白的跟你Ԍ你几十个G的数据库Q短期根本就不用考虑什么碎片问题。这U情况得{大安反映数据库开始变慢了Q再考虑回收D늩间等{。而且你都?#8220;是否要关闭了再做”Q说明你的数据库可以养I也就暗示了它“不是很忙”Q那么最q?Q?q之内你不用考虑做这件事了?/p>

      4。两个数据库同时用一个监听器1521当然不合理,你一个监听器挂了两个数据库都q不上去Q你不觉得这样风险很大么Q?/p>

     两个公用一个端口,Ҏ据的吞吐性能是没有Q何媄响的Q这个你不用担心。但是安全性无疑很低?/p>

      所以当然有必要用两个端?521?520Q其实我你把两个数据库安装在两个不同的操作系l用户下面,q样大家彼此逻辑都清楚,影响,带来的好处你能慢慢体会到。这Ua是从我的工作l验来徏议你的。如果你嫌麻烦当我没说?/p>

      如何讄Q你q个问题问的复杂了,我可懒得把编辑TNS的一堆写出来?/p>

      告诉你个单方法,先命令行输入netca创徏监听器,Z个,1521?520。然后再命o行dbca创徏数据库,注意创徏的过E中会提CZ和哪个端口绑定,自己选就行了。全囑Ş界面非常单?/p>

    ]]>
    oracle 表空间设计原??http://www.aygfsteel.com/hwpok/archive/2011/12/28/367399.html惠万?/dc:creator>惠万?/author>Wed, 28 Dec 2011 03:42:00 GMThttp://www.aygfsteel.com/hwpok/archive/2011/12/28/367399.htmlhttp://www.aygfsteel.com/hwpok/comments/367399.htmlhttp://www.aygfsteel.com/hwpok/archive/2011/12/28/367399.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/367399.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/367399.html常用原则Q?br />1、一般较大的表或索引单独分配一个tablespace?br />2、Read only对象或Read mostly对象分成一l,存在对应的tablespace中?br />3、若tablespace中的对象皆是read only对象Q可tablespace讄成read only模式Q在备䆾Ӟread only tablespace只需备䆾一ơ?br />4、高频率insert的对象分成一l,存在对应的tablespace中?br />5、增、删、改的对象分成一l,存在对应的tablespace中?br />6、表和烦引分别存于不同的tablespace?br />7、存于同一?tablespace中的表(或烦引)的extent 大小最好成倍数关系Q有利于I间的重利用和减碎片?/p>

     
    Ҏ以上原则Q数据库表空间设计原则如下:

    原则上每个schema对应一个表I间和一个相应烦引表I间Q每个schema下的大表对应一个单独的表空间和索引表空_对于需要分区的特大表,则每个子分区对应一个单独的?/p>

    I间和烦引空间?/p>


        典型应用一Q控制用h占用的表I间配额?br />  在一些大型的数据库应用中Q我们需要控制某个用h者某一l用户其所占用的磁盘空间。这好像在文g服务器中Q需要ؓ每个用户讄盘配额一P以防止硬盘空?/p>

    耗竭。所以,在数据库中,我们也需要限制用h可以使用的磁盘空间大。ؓ了达到这个目的,我们可以通过表空间来实现?br />  我们可以在Oracle数据库中Q徏立不同的表空_为其讄最大的存储定wQ然后把用户归属于这个表I间。如此的话,q个用户的存储容量,受到这个表I间大小的限

    制?/p>

      典型应用二:控制数据库所占用的磁盘空间?br />  有时候,在Oracle数据库服务器中,可能q行的不止一个服务。除了数据库服务器外Q可能还有邮件服务器{应用系l服务器。ؓ此,需要先对Oracle数据库的盘I间

    作个规划Q否则,当多个应用程序服务所占用的磁盘空间都无限增加Ӟ最后可能导致各个服务都因ؓ盘I间的耗竭而停止。所以,在同一台服务器上用多个应用程序服?/p>

    Q我们往往需要先l他们进行磁盘空间的规划和分配。各个服务都不能够超q我们分配给他的最大限额,或者超q后及时的提醒我们。只有这P才能够避免因为磁盘空间的?/p>

    竭而导致各U应用服务的崩溃?/p>

      典型应用三:灉|攄表空_提高数据库的输入输出性能?br />  数据库管理员q可以将不同cd的数据放|到不同的表I间中,q样可以明显提高数据库输入输出性能Q有利于数据的备份与恢复{管理工作。因为我们数据库理员在?/p>

    份或者恢复数据的时候,可以按表I间来备份数据。如在设计一个大型的分销pȝ后台数据库的时候,我们可以按省份徏立表I间。与江省相关的数据文g攄在浙江省的表

    I间中,北京发生业务记录Q则记录在北京这个表I间中。如此,当浙江省的业务数据出现错误的时候,则直接还原浙江省的表I间卛_。很明显Q这栯计,当某个表I间?/p>

    的数据出现错误需要恢复的时候,可以避免对其他表I间的媄响?br />  另外Q还可以对表I间q行独立备䆾。当数据库容量比较大的时候,若一下子Ҏ个数据库q行备䆾Q显然会占用比较多的旉。虽然说Oracle数据库支持热备䆾Q但是在

    备䆾期间Q会占用比较多的pȝ资源Q从而造成数据库性能的下降。ؓ此,当数据库定w比较大的时候,我们需要进行设|多个表I间Q然后规划各个表I间的备份时_?/p>

    而可以提高整个数据库的备份效率,降低备䆾对于数据库正常运行的影响?/p>

      典型应用四:大表的排序操作?br />  我们都知道,当表中的记录比较多的时候,对他们进行查询,速度会比较慢。第一ơ查询成功后Q若再对其进行第二次重新排序Q仍焉要这么多的时间。ؓ此,我们在数

    据库设计的时候,针对q种定w比较大的表对象,往往把它攑֜一个独立的表空_以提高数据库的性能?/p>

      典型应用五:日志文g与数据文件分开放,提高数据库安全性?br />  默认情况下,日志文g与数据文件存攑֜同一表空间。但是,q对于数据库安全斚w来说Q不是很好。所以,我们在数据库设计的过E中Q往往喜欢把日志文Ӟ特别是重

    做日志文Ӟ攑֜一个独立的表空间中Q然后把它存攑֜另外一块硬盘上。如此的话,当存放数据文件的盘出现故障Ӟ能够马上通过存放在另一个表I间的重做日志文Ӟ

    Ҏ据库q行修复Q以减少企业因ؓ数据丢失所带来的损失?/p>

      当然Q表I间的优势还不仅仅这些,企业对于数据库的性能要求高Q或者数据库定w大Q则表空间的优势׃大?br />  在数据库设计的时候,我们数据库管理员按如下顺序设|表I间?/p>

        W一步:建立表空间?br />  在设计数据库的时候,首先需要设计表I间。我们需要考虑Q是只徏立一个表I间呢,q是需要徏立多个表I间Q以及各个表I间的存放位|、磁盘限额等{?br />  到底设计多少个表I间合理Q没有统一的说法,q主要根据企业的实际需求去判断。如企业需要对用户q行盘限额控制的,则就需要根据用L数量来设|表I间。当?/p>

    业的数据定w比较大,而其又对数据库的性能有比较高的要求时Q就需要根据不同类型的数据Q设|不同的表空_以提高其输入输出性能?br />  
        W二步:建立用户Qƈ制定用户的默认表I间?br />  在徏立用L时候,我们数据库管理员要指定用L默认表空间。因为我们在利用CREATE语句创徏数据库对象,如数据库表的时候,光认是存储在数据库的当前默?/p>

    I间。若不指定用户默认表I间的话Q则用户每次创徏数据库对象的时候,都要指定表空_昄Q这q不是很合理?/p>

      另外要注意,不同的表I间有不同的权限控制。用户对于表I间Ah完全控制权限Q可能对于表I间B只有查询权限,甚至q连接的权限的都没有。所以,合理为用户配

    |表I间的访问权限,也是提高数据库安全性的一个方法?/p>

    ]]>
    spfile和pfile(?http://www.aygfsteel.com/hwpok/archive/2011/12/12/366164.html惠万?/dc:creator>惠万?/author>Mon, 12 Dec 2011 09:15:00 GMThttp://www.aygfsteel.com/hwpok/archive/2011/12/12/366164.htmlhttp://www.aygfsteel.com/hwpok/comments/366164.htmlhttp://www.aygfsteel.com/hwpok/archive/2011/12/12/366164.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/366164.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/366164.html
        数据库在启动?调用参数文g的顺序ؓ:
    1Qspfile

    2Qpfile
        一般配|中不指定用PFILE文g启动的话默认都是以SPFILE文g启动Q可以通过下面的指令来查看是以pfileq是spfile启动Q如果isspecified里有trueQ表明用spfileq行了指定配|,如果全ؓfalseQ则表明用pfile启动?/span>

    select isspecified,count(*) from v$spparameter group by isspecified;

     

        上述2个文件所在目录可以通过show parameter pfile|spfile 查看Q不q用pfile和spfile查出来的都是同一个参敎ͼ因ؓ一ơ只能用一个参数文件?/p>

    SQL> show parameters spfile
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    spfile                               string      E:/ORACLE/PRODUCT/10.2.0/DB_1/DBS/SPFILESQDSS.ORA

     

    SQL> show parameters pfile
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    spfile                               string      E:/ORACLE/PRODUCT/10.2.0/DB_1/DBS/SPFILESQDSS.ORA

       

        ׃SPFILE是二q制Q无法直接修改,可以通过以下步骤来实玎ͼ

    1Q备份好原始的SPFILE和PFILE文gQ?/p>

    2Q利用SPFILE生成PFILEQ?/p>

       SQL> create pfile from spfile;

    3Q修改PFILE文gQ所要修改的参数名称如果C住可以用show parameters来查看;

    4Q指定PFILE启动数据库,查看修改的参数是否启?/p>

       SQL>shutdown immediate;

       SQL>startup pfile='f:/此处为放|PFILE的目?initSID.ora';

       此处如果PFILE在默认目录则不用加\径,直接文g名即可?/p>

    5Q数据库启动后用show parameters查看修改的参数是否生效,如果生效l箋下一步,否则查重复前面步骤;

    6Q用PFILE生成SPFILEQ指令ؓQ?/p>

       SQL>create spfile from pfile'f:/此处为放|PFILE的目?initSID.ora'; 

    7Q停止数据库Q用SPFILE启动Q?/p>

       SQL>startup;

    8Q数据库启动后用show parameters查看修改的参数是否生效,如果已经是修改过的值则大功告成Q中途每ơ用create命o前后注意观察所创徏文g的修Ҏ间?/p>

    ]]>
    oracle 使用~译警告http://www.aygfsteel.com/hwpok/archive/2011/09/20/359050.html惠万?/dc:creator>惠万?/author>Tue, 20 Sep 2011 02:23:00 GMThttp://www.aygfsteel.com/hwpok/archive/2011/09/20/359050.htmlhttp://www.aygfsteel.com/hwpok/comments/359050.htmlhttp://www.aygfsteel.com/hwpok/archive/2011/09/20/359050.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/359050.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/359050.html

    ]]>
    oracle 存储中的?/title><link>http://www.aygfsteel.com/hwpok/archive/2011/09/19/358999.html</link><dc:creator>惠万?/dc:creator><author>惠万?/author><pubDate>Mon, 19 Sep 2011 08:28:00 GMT</pubDate><guid>http://www.aygfsteel.com/hwpok/archive/2011/09/19/358999.html</guid><wfw:comment>http://www.aygfsteel.com/hwpok/comments/358999.html</wfw:comment><comments>http://www.aygfsteel.com/hwpok/archive/2011/09/19/358999.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/hwpok/comments/commentRss/358999.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/hwpok/services/trackbacks/358999.html</trackback:ping><description><![CDATA[CREATE OR REPLACE PROCEDURE pro_PPT<br />IS<br />       E1 EXCEPTION;<br />       PRAGMA EXCEPTION_INIT(E1, -2200);<br />BEGIN<br />  <br />  -- ?开?-----------------------------------------------------<br />  DECLARE<br />    n NUMBER := 1;<br />  BEGIN<br />    DBMS_OUTPUT.put_line('W??||n);<br />  EXCEPTION <br />    WHEN OTHERS THEN<br />         DBMS_OUTPUT.put_line('W?块异?------');<br />  END;<br />  -- ?l束------------------------------------------------------<br />  <br />  -- ?开?-----------------------------------------------------<br />  DECLARE<br />    m NUMBER := 2;<br />  BEGIN<br />    DBMS_OUTPUT.put_line('W??||m);<br />  EXCEPTION <br />    WHEN OTHERS THEN<br />         DBMS_OUTPUT.put_line('W?块异?------');<br />  END;<br />  -- ?l束------------------------------------------------------<br />EXCEPTION<br />  WHEN OTHERS THEN<br />    DBMS_OUTPUT.put_line('收到全局-------');<br />END;<img src ="http://www.aygfsteel.com/hwpok/aggbug/358999.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/hwpok/" target="_blank">惠万?/a> 2011-09-19 16:28 <a href="http://www.aygfsteel.com/hwpok/archive/2011/09/19/358999.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(?insert into select 中用序?/title><link>http://www.aygfsteel.com/hwpok/archive/2011/09/14/358653.html</link><dc:creator>惠万?/dc:creator><author>惠万?/author><pubDate>Wed, 14 Sep 2011 13:18:00 GMT</pubDate><guid>http://www.aygfsteel.com/hwpok/archive/2011/09/14/358653.html</guid><wfw:comment>http://www.aygfsteel.com/hwpok/comments/358653.html</wfw:comment><comments>http://www.aygfsteel.com/hwpok/archive/2011/09/14/358653.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/hwpok/comments/commentRss/358653.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/hwpok/services/trackbacks/358653.html</trackback:ping><description><![CDATA[<div id="wmqeeuq" class="showContent"> <p>今天遇到一个问题:</p> <p>在insert into select后面用序列时报错</p> <p> </p> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">insert</span><span style="color: #000000"> </span><span style="color: #0000ff">into</span><span style="color: #000000"> R_POL_VIPO(id,SUMVIPONUM,STATSTICSDATE)<br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">select</span><span style="color: #000000"> R_POL_VIPO_seq.Nextval,VIPONUM,sysdate<br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /> </span><span style="color: #0000ff">from</span><span style="color: #000000"> R_POL_VIPO<br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /> </span><span style="color: #0000ff">where</span><span style="color: #000000"> </span><span style="color: #ff00ff">YEAR</span><span style="color: #808080">=</span><span style="color: #000000">substr(v_date,</span><span style="color: #800000; font-weight: bold">0</span><span style="color: #000000">,</span><span style="color: #800000; font-weight: bold">4</span><span style="color: #000000">) </span><span style="color: #808080">and</span><span style="color: #000000"> </span><span style="color: #ff00ff">MONTH</span><span style="color: #808080">=</span><span style="color: #000000">substr(v_date,</span><span style="color: #800000; font-weight: bold">5</span><span style="color: #000000">);<br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /></span></div> <p>ORA-02287:此处序号不许使用</p> <p>其Ҏ如下形式~译通过了:</p> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">insert</span><span style="color: #000000"> </span><span style="color: #0000ff">into</span><span style="color: #000000"> R_POL_VIPO(id,SUMVIPONUM,STATSTICSDATE)<br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />  </span><span style="color: #0000ff">select</span><span style="color: #000000"> R_POL_VIPO_seq.Nextval,b.</span><span style="color: #808080">*</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />    </span><span style="color: #0000ff">from</span><span style="color: #000000"> (</span><span style="color: #0000ff">select</span><span style="color: #000000"> VIPONUM,sysdate<br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />              </span><span style="color: #0000ff">from</span><span style="color: #000000"> R_POL_VIPO<br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" />            </span><span style="color: #0000ff">where</span><span style="color: #000000"> </span><span style="color: #ff00ff">YEAR</span><span style="color: #808080">=</span><span style="color: #000000">substr(v_date,</span><span style="color: #800000; font-weight: bold">0</span><span style="color: #000000">,</span><span style="color: #800000; font-weight: bold">4</span><span style="color: #000000">) </span><span style="color: #808080">and</span><span style="color: #000000"> </span><span style="color: #ff00ff">MONTH</span><span style="color: #808080">=</span><span style="color: #000000">substr(v_date,</span><span style="color: #800000; font-weight: bold">5</span><span style="color: #000000">)) b;<br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /></span></div> <p> </p> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #0000ff">INSERT</span><span style="color: #000000"> </span><span style="color: #0000ff">INTO</span><span style="color: #000000"> EX_EDM_DAILY_SENDED (ID ,DETAIL_ID,TASK_ID,</span><span style="color: #ff00ff">USER_ID</span><span style="color: #000000">,PROJECT_ID, DATA_TYPE,EMAIL ,CONTENT3,CONTENT2 ,CONTENT1 ,REAL_STATUS,SHAM_STATUS,OPEN_TIME,OPEN_COUNT,OPEN_IP  ,OPEN_CITY,CLICK_TIME,CLICK_COUNT ,CLICK_IP ,CLICK_CITY ,REGISTE_TIME,SEND_TIME,SEND_IP,SEND_NAME,RESEND_COUNT,CATEGORY ,LOCAL_CODE ,LOCAL_MSG,ESP_CODE  ,ESP_MSG ,DELETE_FLAG,CREATE_TIME,REMARK)  </span><span style="color: #0000ff">SELECT</span><span style="color: #000000"> EX_EDM_SEQ_DAILY_SENDED.NEXTVAL,ID,TASK_ID,</span><span style="color: #ff00ff">USER_ID</span><span style="color: #000000">,PROJECT_ID,DATA_TYPE,EMAIL ,CONTENT3,CONTENT2 ,CONTENT1 ,REAL_STATUS,SHAM_STATUS,OPEN_TIME,OPEN_COUNT,OPEN_IP  ,OPEN_CITY,CLICK_TIME,CLICK_COUNT ,CLICK_IP ,CLICK_CITY ,REGISTE_TIME,SEND_TIME,SEND_IP,SEND_NAME,RESEND_COUNT,CATEGORY ,LOCAL_CODE ,LOCAL_MSG,ESP_CODE,ESP_MSG ,DELETE_FLAG,CREATE_TIME,REMARK </span><span style="color: #0000ff">FROM</span><span style="color: #000000"> </span></div> <p>上以q句在java jdbc里执行是没有问题?<br />本文 “<a >水滴</a>” 博客Q请务必保留此出?a >http://407882.blog.51cto.com/397882/594736</a></p></div><img src ="http://www.aygfsteel.com/hwpok/aggbug/358653.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/hwpok/" target="_blank">惠万?/a> 2011-09-14 21:18 <a href="http://www.aygfsteel.com/hwpok/archive/2011/09/14/358653.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(原创)DBMS_SCHEDULER 带参数JOBhttp://www.aygfsteel.com/hwpok/archive/2011/09/14/358602.html惠万?/dc:creator>惠万?/author>Wed, 14 Sep 2011 05:35:00 GMThttp://www.aygfsteel.com/hwpok/archive/2011/09/14/358602.htmlhttp://www.aygfsteel.com/hwpok/comments/358602.htmlhttp://www.aygfsteel.com/hwpok/archive/2011/09/14/358602.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/358602.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/358602.html1.创徏试?
    CREATE TABLE t_test
    (
        ID DATE 
    PRIMARY KEY,
        VALUE 
    NUMBER
    );

    2.创徏存储q程
    create or replace procedure pro_test(v IN NUMBER
    is
    begin
        
    insert into t_test(id,VALUE) values (sysdate,v);
    end;
    /



    3.创徏JOB
    BEGIN
        DBMS_SCHEDULER.CREATE_JOB(
            JOB_NAME            
    => 'HUYVANPULL_TEST_JOB1',
            JOB_TYPE            
    => 'STORED_PROCEDURE',
            JOB_ACTION          
    => 'PRO_TEST',
            NUMBER_OF_ARGUMENTS 
    => 1,
            REPEAT_INTERVAL     
    => 'FREQ=MINUTELY;INTERVAL=1',
            ENABLED             
    => FALSE,
            START_DATE          
    => SYSDATE,
            COMMENTS            
    =>'HUYVANPULL-Test');
    END;
    /
    如果没有创徏权限,赋权?br />
    Grant Create Job To em_test;

    4.讄存储JOB的存储过E的参数
    BEGIN
        DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
            JOB_NAME      
    => 'HUYVANPULL_TEST_JOB1',
            ARGUMENT_POSITION 
    => 1,
            ARGUMENT_VALUE     
    => 0
        );
    END;
    /

    5.启动JOB
    BEGIN
            DBMS_SCHEDULER.enable(
    'HUYVANPULL_TEST_JOB1');
    END;
    /


    6.查询JOB
    SELECT *  FROM USER_SCHEDULER_JOBS;

    7.停用JOB
    BEGIN
            DBMS_SCHEDULER.disable(
    'HUYVANPULL_TEST_JOB1');
    END;
    /

    8.删除JOB
    BEGIN
            DBMS_SCHEDULER.drop_job(
    'HUYVANPULL_TEST_JOB1');
    END;
    /


    ]]>(?DBMS_SCHEDULERhttp://www.aygfsteel.com/hwpok/archive/2011/09/14/358598.html惠万?/dc:creator>惠万?/author>Wed, 14 Sep 2011 05:16:00 GMThttp://www.aygfsteel.com/hwpok/archive/2011/09/14/358598.htmlhttp://www.aygfsteel.com/hwpok/comments/358598.htmlhttp://www.aygfsteel.com/hwpok/archive/2011/09/14/358598.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/358598.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/358598.htmlCZ2:创徏一个Q务(STORED_PROCEDUREQ?br />在这个demo中,我用了带参数的procedureQ一U情冉|使用默认|另外一U情冉|使用新设|的倹{下面看具体的示例过E?br />
    W一步:创徏一个日志表和相应的procedure

    SQL> create table sch_demo_log
      2  (  arg_1 number,
      3     arg_2 varchar2(32),
      4     deal_date date
      5  );

    表已创徏?br />
    SQL> create or replace procedure proc_sch(arg_1 in number ,
      2                                       arg_2 in varchar2)
      3  is
      4  begin
      5     insert into sch_demo_log values(arg_1,arg_2,sysdate);
      6     commit;
      7  end;
      8  /

    q程已创建?br />W二步:创徏一个调度程序ƈ讄对应procedure中参数的default value


    SQL> begin
      2     DBMS_SCHEDULER.CREATE_PROGRAM(
      3                    program_name        => 'TEST_PROG',
      4                    program_action      => 'PROC_SCH',
      5                    program_type        => 'STORED_PROCEDURE',
      6                    number_of_arguments => 2,
      7                    comments            => 'sch test by STORED_PROCEDURE with argument',
      8                    enabled             => false);
      9  end;
    10  /

    PL/SQL q程已成功完成?br />
    SQL>
    SQL> begin
      2    DBMS_SCHEDULER.define_program_argument(
      3                   program_name      => 'TEST_PROG',
      4                   argument_position => 1,
      5                   argument_type     => 'number',
      6                   default_value     => 100);
      7   
      8    DBMS_SCHEDULER.define_program_argument(
      9                   program_name      => 'TEST_PROG',
    10                   argument_position => 2,
    11                   argument_type     => 'VARCHAR2',
    12                   default_value     => 'Thomaszhang Test');
    13  END;
    14  /

    PL/SQL q程已成功完成?br />
     

    W三步:创徏一个调度表Q计划)

    在本demo中,?分钟q行一?br />
    SQL> begin
      2    DBMS_SCHEDULER.create_schedule(
      3                   repeat_interval => 'FREQ=MINUTELY;INTERVAL=2',
      4                   start_date      => sysdate,
      5                   comments        => 'test',
      6                   schedule_name   => 'TEST_SCH');
      7  end;
      8  /

    PL/SQL q程已成功完成?br />W四步:创徏一个job

    SQL> begin
      2    DBMS_SCHEDULER.create_job(
      3                   job_name      => 'TEST_JOB',     
      4                   program_name  => 'TEST_PROG',
      5                   schedule_name => 'TEST_SCH',
      6                   job_class     => 'DEFAULT_JOB_CLASS',            
      7                   comments      => 'arg test',
      8                   auto_drop     => false,
      9                   enabled       => false);
    10  end;
    11  /

    PL/SQL q程已成功完成?br />
    SQL> exec DBMS_SCHEDULER.enable('TEST_PROG');
    PL/SQL q程已成功完成?br />
    SQL> exec DBMS_SCHEDULER.enable('TEST_JOB');
    PL/SQL q程已成功完成?br />W五步:查运行情况,查看一下日志表记录情况
    SQL> select * from sch_demo_log;

    未选定?br />
     

    --q没有到调度旉Q稍{一下。。?br />

    SQL> select * from sch_demo_log;

         ARG_1 ARG_2                    DEAL_DATE
    ---------- ------------------------ -------------------
           100 Thomaszhang Test         2007-11-12 14:35:59

    可以看到Q这个时候,sch_demo_log记录的前2个字D,使用了我们前面define的缺省?下面我set一个新的job参数看看

     

    W六步:讄不同的job参数


    SQL> begin
      2    DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
      3                   job_name          => 'TEST_JOB',
      4                   argument_position => 1,
      5                   argument_value    => 200);
      6   
      7    DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
      8                   job_name          => 'TEST_JOB',
      9                   argument_position => 2,
    10                   argument_value    => 'set new value first');
    11  end;
    12  /

    PL/SQL q程已成功完成?br />
    SQL> select * from sch_demo_log;

         ARG_1 ARG_2                    DEAL_DATE
    ---------- ------------------------ -------------------
           100 Thomaszhang Test         2007-11-12 14:35:59
           200 set new value first      2007-11-12 14:37:59可以看到Q这个时候,记录的日志变成了新的参数。这个demo 说明Q根据我们的需要,可以讄不同的运行期参数。SQL> begin
      2    DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
      3                   job_name          => 'TEST_JOB',
      4                   argument_position => 1,
      5                   argument_value    => 300);
      6   
      7    DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
      8                   job_name          => 'TEST_JOB',
      9                   argument_position => 2,
    10                   argument_value    => 'set new value second');
    11  end;
    12  /

    PL/SQL q程已成功完成。再换一个看看:

    SQL> select * from sch_demo_log;

         ARG_1 ARG_2                   DEAL_DATE
    ---------- ----------------------- -------------------
           100 Thomaszhang Test        2007-11-12 14:35:59
           200 set new value first     2007-11-12 14:37:59
           300 set new value second    2007-11-12 14:39:59
    清除通过set_job_argument_value讄的参敎ͼSQL> begin
      2    DBMS_SCHEDULER.reset_job_argument_value('TEST_JOB',1);
      3    DBMS_SCHEDULER.reset_job_argument_value('TEST_JOB',2);
      4  end;
      5  /

    PL/SQL q程已成功完成?br />
    SQL> select * from sch_demo_log;

         ARG_1 ARG_2                    DEAL_DATE
    ---------- ------------------------ -------------------
           100 Thomaszhang Test         2007-11-12 14:35:59
           200 set new value first      2007-11-12 14:37:59
           300 set new value second     2007-11-12 14:39:59
           100 Thomaszhang Test         2007-11-12 14:41:59可以看到又恢复到了我们前面定义的默认倹{这个|可以通过dba_scheduler_program_args视图看到。SQL> begin
      2    DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
      3                   job_name          => 'TEST_JOB',
      4                   argument_position => 1,
      5                   argument_value    => 400);
      6   
      7    DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE(
      8                   job_name          => 'TEST_JOB',
      9                   argument_position => 2,
    10                   argument_value    => 'set new value third');
    11  end;
    12  /

    PL/SQL q程已成功完成?br />
    SQL> select * from sch_demo_log;

         ARG_1 ARG_2                  DEAL_DATE
    ---------- ---------------------- -------------------
           100 Thomaszhang Test       2007-11-12 14:35:59
           200 set new value first    2007-11-12 14:37:59
           300 set new value second   2007-11-12 14:39:59
           100 Thomaszhang Test       2007-11-12 14:41:59
           400 set new value third    2007-11-12 14:43:59

    SQL> begin
      2    DBMS_SCHEDULER.reset_job_argument_value('TEST_JOB',1);
      3    DBMS_SCHEDULER.reset_job_argument_value('TEST_JOB',2);
      4  end;
      5  /

    PL/SQL q程已成功完成?br />
    SQL> select * from sch_demo_log;

         ARG_1 ARG_2                   DEAL_DATE
    ---------- ----------------------- -------------------
           100 Thomaszhang Test        2007-11-12 14:35:59
           200 set new value first     2007-11-12 14:37:59
           300 set new value second    2007-11-12 14:39:59
           100 Thomaszhang Test        2007-11-12 14:41:59
           400 set new value third     2007-11-12 14:43:59
           100 Thomaszhang Test        2007-11-12 14:45:59

    已选择6行?br />


    ]]>oracle row_number over http://www.aygfsteel.com/hwpok/archive/2011/08/25/357258.html惠万?/dc:creator>惠万?/author>Thu, 25 Aug 2011 06:08:00 GMThttp://www.aygfsteel.com/hwpok/archive/2011/08/25/357258.htmlhttp://www.aygfsteel.com/hwpok/comments/357258.htmlhttp://www.aygfsteel.com/hwpok/archive/2011/08/25/357258.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/357258.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/357258.html1.先创
    create table employee (empid int ,deptid int ,salary decimal(10,2));

    2.插入记录
    insert into employee values(1,10,5500.00);
    insert into employee values(2,10,4500.00);
    insert into employee values(3,20,1900.00);
    insert into employee values(4,20,4800.00);
    insert into employee values(5,40,6500.00);
    insert into employee values(6,40,14500.00);
    insert into employee values(7,40,44500.00);
    insert into employee values(8,50,6500.00);
    insert into employee values(9,50,750 0.00);


    3.语句讲解
    row_number() over([partition by col1] order by col2)) as 别名

    此语句表C?Ҏcole1分组,  在分l内部根据col2q行排序?br />而这个别名表C?每个l内排序的顺序编?l内q接唯一).

    4.具体看个例子
    SELECT 
           empid,
           deptid,
           salary,
           row_number() 
    OVER(PARTITION BY deptid ORDER BY salary DESC) salary_order 
    FROM employee;
    l果如下

    延一? 如果是按某个字段分组然后从每l取出最大的一条纪?只需加一个条?salary_order=1
    sql代码如下:
    SELECT 
        t1.empid,
        t1.deptid,
        t1.salary
    FROM (
        
    SELECT 
           empid,
           deptid,
           salary,
           row_number() 
    OVER(PARTITION BY deptid ORDER BY salary DESC) salary_order 
        
    FROM employee
        ) t1
    WHERE t1.salary_order=1;

    再g怸下,Ҏ部门分组Q再按部门内的个水排序,逐个累加?br />
    SELECT 
        empid,
        deptid,
        salary,
        
    sum(salary) OVER(PARTITION BY deptid ORDER BY salary DESC) ts   
    FROM employee

    5.partition by ?group by 的区?br />   1).partition by能得到统计后的明l数据, group by 只能得到汇L据?br />   2).partition by在from前, group ?where ?


    ]]>
    oracle md5存?/title><link>http://www.aygfsteel.com/hwpok/archive/2011/08/22/357044.html</link><dc:creator>惠万?/dc:creator><author>惠万?/author><pubDate>Mon, 22 Aug 2011 07:12:00 GMT</pubDate><guid>http://www.aygfsteel.com/hwpok/archive/2011/08/22/357044.html</guid><wfw:comment>http://www.aygfsteel.com/hwpok/comments/357044.html</wfw:comment><comments>http://www.aygfsteel.com/hwpok/archive/2011/08/22/357044.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/hwpok/comments/commentRss/357044.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/hwpok/services/trackbacks/357044.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #0000ff">CREATE</span><span style="color: #000000"> </span><span style="color: #808080">OR</span><span style="color: #000000"> </span><span style="color: #ff00ff">REPLACE</span><span style="color: #000000"> </span><span style="color: #0000ff">PROCEDURE</span><span style="color: #000000"> pro_gen_md5<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">IS</span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />   update_sql_str </span><span style="color: #000000; font-weight: bold">VARCHAR2</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">1000</span><span style="color: #000000">);<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />   temp_info_str </span><span style="color: #000000; font-weight: bold">VARCHAR2</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">2000</span><span style="color: #000000">);<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />   md5_str </span><span style="color: #000000; font-weight: bold">VARCHAR2</span><span style="color: #000000">(</span><span style="color: #800000; font-weight: bold">1000</span><span style="color: #000000">);<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />   id_str </span><span style="color: #000000; font-weight: bold">NUMBER</span><span style="color: #000000">;<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">BEGIN</span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />  update_sql_str :</span><span style="color: #808080">=</span><span style="color: #000000"> </span><span style="color: #ff0000">'</span><span style="color: #ff0000">UPDATE ower_temp SET md5_code=:1 WHERE id=:2</span><span style="color: #ff0000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />  </span><span style="color: #0000ff">FOR</span><span style="color: #000000"> r </span><span style="color: #808080">IN</span><span style="color: #000000">(</span><span style="color: #0000ff">SELECT</span><span style="color: #000000"> </span><span style="color: #808080">*</span><span style="color: #000000"> </span><span style="color: #0000ff">FROM</span><span style="color: #000000"> ower_temp </span><span style="color: #0000ff">WHERE</span><span style="color: #000000"> md5_code </span><span style="color: #0000ff">IS</span><span style="color: #000000"> </span><span style="color: #0000ff">NULL</span><span style="color: #000000">)<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />    LOOP<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />      temp_info_str :</span><span style="color: #808080">=</span><span style="color: #000000"> nvl(r.VEHICLE_CODE,</span><span style="color: #ff0000">''</span><span style="color: #000000">);<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        </span><span style="color: #0000ff">IF</span><span style="color: #000000"> length(temp_info_str)</span><span style="color: #808080">></span><span style="color: #800000; font-weight: bold">0</span><span style="color: #000000"> </span><span style="color: #0000ff">THEN</span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />            md5_str :</span><span style="color: #808080">=</span><span style="color: #000000"> utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING </span><span style="color: #808080">=></span><span style="color: #000000"> temp_info_str)); <br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />            id_str  :</span><span style="color: #808080">=</span><span style="color: #000000"> r.id;<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />            </span><span style="color: #0000ff">EXECUTE</span><span style="color: #000000"> IMMEDIATE update_sql_str<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />                USING md5_str,id_str; <br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />            </span><span style="color: #0000ff">COMMIT</span><span style="color: #000000">;<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        </span><span style="color: #0000ff">END</span><span style="color: #000000"> </span><span style="color: #0000ff">IF</span><span style="color: #000000">;<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />    </span><span style="color: #0000ff">END</span><span style="color: #000000"> LOOP;<br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">END</span><span style="color: #000000">;</span></div><img src ="http://www.aygfsteel.com/hwpok/aggbug/357044.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/hwpok/" target="_blank">惠万?/a> 2011-08-22 15:12 <a href="http://www.aygfsteel.com/hwpok/archive/2011/08/22/357044.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(? oracle 正则表达?http://www.aygfsteel.com/hwpok/archive/2011/08/22/357019.html惠万?/dc:creator>惠万?/author>Mon, 22 Aug 2011 02:38:00 GMThttp://www.aygfsteel.com/hwpok/archive/2011/08/22/357019.htmlhttp://www.aygfsteel.com/hwpok/comments/357019.htmlhttp://www.aygfsteel.com/hwpok/archive/2011/08/22/357019.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/357019.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/357019.html是由普通字W(例如字符a到zQ以及特D字W(UCؓ元字W)l成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符丌Ӏ正则表辑ּ作ؓ一个模板,某个字W模式与所搜烦的字W串q行匚w?/p>

    本文详细地列Z能在正则表达式中使用Q以匚w文本的各U字W。当你需要解释一个现有的正则表达式时Q可以作Z个快L参考。更多详l内容,请参 考:Francois Liger,Craig McQ?n,Pal Wilton[刘乐亭译] C#字符串和正则表达式参考手册北京:清华大学出版C?003.2


    .     匚w字符

    字符c?/strong>

    匚w的字W?/strong>

    ?/strong> ?/strong>

    \d

    从0-Q的M数字

    \d\d匚w72,但不匚waa?a

    \D

    M非数字字W?/p>

    \D\D\D匚wabc,但不匚w123

    \w

    M单词字符Q包括A-Z,a-z,0-9和下划线

    \w\w\w\w匚wAb-2Q但不匹?#8721;K?%*或Ab_@

    \W

    M非单词字W?/p>

    \W匚wQ,但不匚wa

    \s

    MI白字符Q包括制表符Q换行符Q回车符Q换늬和垂直制表符

    匚w在HTML,XML和其他标准定义中的所有传l空白字W?/p>

    \S

    M非空白字W?/p>

    I白字符以外的Q意字W?如A%&g3;{?/p>

    .

    M字符

    匚w除换行符以外的Q意字W除非设|了MultiLine先项

    […]

    括号中的M字符

    [abc]匹配一个单字符,a,b或c.

    [a-z]匹配从a到z的Q一字符

    [^…]

    不在括号中的M字符

    [^abc]匹配一个a、b、c之外的单字符,可以a,b或A、B、C

    [a-z]匹配不属于a-z的Q一字符,但可以匹配所有的大写字母

    ?/strong>.     重复字符

    重复字符

    ?/strong> ?/strong>

    ?/strong> ?/strong>

    {n?/p>

    匚w前面的字Wn?/p>

    x{2}匚wxx,但不匚wx或xxx

    {n,?/p>

    匚w前面的字W至n?/p>

    x{2}匚w2个或更多的x,如xxx,xxx..

    {n,m?/p>

    匚w前面的字W至n?臛_mơ。如果n?Q此参数为可选参?/p>

    x{2,4}匚wxx,xxx,xxxx,但不匚wxxxxx

    ?

    匚w前面的字W?ơ或1ơ,实质上也是可选的

    x?匚wx或零个x

    +

    匚w前面的字W?ơ或多次

    x+匚wx或xx或大?的Q意多个x

    *

    匚w前面的字W?ơ或更多?/p>

    x*匚w0,1或更多个x

    ?/strong>.     定位字符

    定位字符

    ?/strong> q?/strong>

    ^

    随后的模式必M于字W串的开始位|,如果是一个多行字W串Q则必须位于行首。对于多行文本(包含回RW的一个字W串Q来_需要设|多行标?/p>

    $

    前面的模式必M于字W串的未端,如果是一个多行字W串Q必M于行?/p>

    \A

    前面的模式必M于字W串的开始位|,忽略多行标志

    \z

    前面的模式必M于字W串的未端,忽略多行标志

    \Z

    前面的模式必M于字W串的未端,或者位于一个换行符?/p>

    \b

    匚w一个单词边界,也就是一个单词字W和非单词字W中间的炏V要C一个单词字W是[a-zA-Z0-9]中的一个字W。位于一个单词的词首

    \B

    匚w一个非单词字符边界位置Q不是一个单词的词首

    注:定位字符可以应用于字W或l合Q放在字W串的左端或右端

    ?/strong>.     分组字符

    分组字符

    ?/strong> ?/strong>

    ?/strong> ?/strong>

    Q)

    此字W可以组合括号内模式所匚w的字W,它是一个捕LQ也是说模式匹配的字符作ؓ最l设|了ExplicitCapture选项――默认状态下字符不是匚w的一部分

    输入字符串ؓQABC1DEF2XY

    匚w3个从A到Z的字W和1个数字的正则表达式:Q[A-Z]{3}\dQ?/p>

    生两ơ匹配:Match 1=ABC1;Match 2=DEF2

    每次匚w对应一个组QMatch1的第一个组QABC;Match2的第1个组QDEF

    有了反向引用Q就可以通过它在正则表达式中的编号以及C#和类Group,GroupCollection来访问组。如果设|了ExplicitCapture选项Q就不能使用l所捕获的内?/p>

    Q?:Q?/p>

    此字W可以组合括号内模式所匚w的字W,它是一个非捕获l,q意味着模式所的字W将不作Z个组来捕P但它构成了最l匹配结果的一部分。它基本上与上面的组cd相同Q但讑֮了选项ExplicitCapture

    输入字符串ؓQ?A BB SA1 C

    匚w一个数字或一个A到Z的字母,接着是Q意单词字W的正则表达式ؓQ(?:\d|[A-Z]\wQ?/p>

    它将产生3ơ匹配:?ơ匹配=1AQ每2ơ匹配=BB;?ơ匹配=SA

    但是没有l被捕获

    Q?<name>Q?/p>

    此选项l合括号内模式所匚w的字W,q用括号中指定的gؓl命名。在正则表达式中Q可以用名U进行反向引用,而不必用编受即使不讄ExplicitCapture选项Q它也是一个捕L。这意味着反向引用可以利用l内匚w的字W,或者通过Groupc访?/p>

    输入字符串ؓQCharacters in Sienfeld incl? Jerry Seinfeld,Elaine Benes,Cosno Kramer and George Costanza能够匚w它们的姓名,q在一个组llastName中捕获姓的正则表辑ּ为:\b[A-Z][a-z]+ (?<lastName>[A-Z][a-z]+)\b

    它生了4ơ匹配:First Match=Jerry Seinfeld; Second Match=Elaine Benes; Third Match=Cosmo Kramer; Fourth Match=George Costanza

    每一ơ匹配都对应了一个lastNamel:

    W?ơ匹配:lastName group=Seinfeld

    W?ơ匹配:lastName group=Benes

    W?ơ匹配:lastName group=Kramer

    W?ơ匹配:lastName group=Costanza

    不管是否讄了选项ExplictCaptureQ组都将被捕?/p>

    Q?=Q?/p>

    正声明。声明的右侧必须是括号中指定的模式。此模式不构成最l匹配的一部分

    正则表达式\S+(?=.NET)要匹配的输入字符串ؓQThe lang ges were Java,C#.NET,VB.NET,C,Jscript.NET,Pascal

    生如下匹配:?/p>

    C#

    VB

    JScript.

    Q?!Q?/p>

    负声明。它规定模式不能紧着声明的右侧。此模式不构成最l匹配的一部分

    \d{3}(?![A-Z])要匹配的输入字符串ؓQ?23A 456 789111C

    生如下匹配:

    456

    789

    Q?<=Q?/p>

    反向正声明。声明的左侧必须为括号内的指定模式。此模式不构成最l匹配的一部分

    正则表达??<=New)([A-Z][a-z]+)要匹配的输入字符串ؓQThe following states,New Mexico,West Virginia,Washington, New England

    它将产生如下匚wQ?/p>

    Mexico

    England

    Q?<!Q?/p>

    反向正声明。声明的左侧必须不能是括号内的指定模式。此模式不构成最l匹配的一部分

    正则表达??<!1)\d{2}([A-Z])要匹配的输入字符串如下:123A456F789C111A

    它将实现如下匚wQ?/p>

    56F

    89C

    Q?>Q?/p>

    非回溯组。防止Regex引擎回溯q且防止实现一ơ匹?/p>

    假设要匹配所有以“ing”l尾的单词。输入字W串如下QHe was very trusing

    正则表达式ؓQ?*ing

    它将实现一ơ匹?#8213;―单词trusting?#8220;.”匚wL字符Q当然也匚w“ing”。所以,Regex引擎回溯一位ƈ在第2?#8220;t”停止Q然后匹配指定的模式“ing”。但是,如果用回溯操作Q??>.*)ing

    它将实现0ơ匹配?#8220;.”能匹配所有的字符Q包?#8220;ing”――不能匚wQ从而匹配失?/p>

    ?/strong>.     决策字符

    ?/strong> W?/strong>

    ?/strong> q?/strong>

    ?/strong> ?/strong>

    Q?(regex)yes_regex|no_regexQ?/p>

    如果表达式regex匚wQ那么将试图匚w表达式yes。否则匹配表辑ּno。正则表辑ּno是可先参数。注意,作出决策的模式宽度ؓ0.q意味着表达式yes或no从与regex表达式相同的位置开始匹?/p>

    正则表达??(\d)dA|A-Z)B)要匹配的输入字符串ؓQ?A CB3A5C 3B

    它实现的匚w是:

    1A

    CB

    3A

    Q?(group name or number)yes_regex|no_regexQ?/p>

    如果l中的正则表辑ּ实现了匹配,那么试图匚wyes正则表达式。否则,试图匚w正则表达式no。no是可先的参数

    正则表达?/p>

    (\d7)?-(?(1)\d\d[A-Z]|[A-Z][A-Z]要匹配的输入字符串ؓQ?/p>

    77-77A 69-AA 57-B

    它实现的匚w为:

    77-77A

    QAA

    注:上面表中列出的字W强q处理器执行一ơif-else决策

    ?/strong>.     替换字符

    ?/strong> W?/strong>

    ?/strong> q?/strong>

    $group

    用group指定的组h?/p>

    ${name}

    替换被一??<name>)l匹配的最后子?/p>

    $$

    替换一个字W?

    $&

    替换整个的匹?/p>

    $^

    替换输入字符串匹配之前的所有文?/p>

    $’

    替换输入字符串匹配之后的所有文?/p>

    $+

    替换最后捕Ll?/p>

    $_

    替换整个的输入字W串

    注:以上为常用替换字W,不全

    ?/strong>.     转义序列

    ?/strong> W?/strong>

    ?/strong> q?/strong>

    \\

    匚w字符“\”

    \.

    匚w字符“.”

    \*

    匚w字符“*”

    \+

    匚w字符“+”

    \?

    匚w字符“?”

    \|

    匚w字符“|”

    \(

    匚w字符“(”

    \)

    匚w字符“)”

    \{

    匚w字符“{”

    \}

    匚w字符“}”

    \^

    匚w字符“^”

    \$

    匚w字符“$”

    \n

    匚w换行W?/p>

    \r

    匚w回RW?/p>

    \t

    匚w制表W?/p>

    \v

    匚w垂直制表W?/p>

    \f

    匚w换面W?/p>

    \nnn

    匚w一?q数字,nnn指定的ASCII字符。如\103匚w大写的C

    \xnn

    匚w一?6q数字,nn指定的ASCII字符。如\x43匚w大写的C

    \unnnn

    匚w??6q数字(由nnnn表示Q指定的Unicode字符

    \cV

    匚w一个控制字W,如\cV匚wCtrl-V

    ?/strong>.     选项标志

    选项标志

    ?/strong> U?/strong>

    I

    IgnoreCase

    M

    Multiline

    N

    ExplicitCapture

    S

    SingleLine

    X

    IgnorePatternWhitespace

    注:选项本n的信作含义如下表所C:

    ?/strong> ?/strong>

    ?/strong> U?/strong>

    IgnoreCase

    使模式匹配不区分大小写。默认的选项是匹配区分大写

    RightToLeft

    从右到左搜烦输入字符丌Ӏ默认是从左到右以符合英语等的阅M惯,但不W合阿拉伯语或希伯来语的阅读习惯

    None

    不设|标志。这是默认选项

    Multiline

    指定^?可以匚w行首和行,以及字符串的开始和l尾。这意味着可以匚w每个用换行符分隔的行。但是,字符“.”仍然不匹配换行符

    SingleLine

    规定Ҏ字符“.”匚wL的字W,包括换行W。默认情况下Q特D字W?#8220;.”不匹配换行符。通常与MultiLine选项一起?/p>

    ECMAScript.

    ECMA(European Coputer Man?turer’s Association,Ƨ洲计算机生产商协会)已经定义了正则表辑ּ应该如何实现Q而且已经在ECMAScript规范中实玎ͼq是一个基于标准的 JavaScript。这个选项只能与IgnoreCase和MultiLine标志一起用。与其它M标志一起用,ECMAScript都将产生??/p>

    IgnorePatternWhitespace

    此选项从用的正则表达式模式中删除所有非转义I白字符。它使表辑ּ能跨多行文本,但必ȝ保对模式中所有的I白q行转义。如果设|了此选项Q还可以使用“#”字符来注释下则表辑ּ

    Complied

    它把正则表达式编译ؓ更接q机器代码的代码。这样速度快,但不允许对它q行M修改

    oracle的正则表辑ּ(regular expression)单介l?/p>

    目前Q正则表辑ּ已经在很多Y件中得到q泛的应用,包括*nixQLinux, Unix{)QHP{操作系l,PHPQC#QJava{开发环境?/p>

    Oracle 10g正则表达式提高了SQL灉|性。有效的解决了数据有效性, 重复词的辨认, 无关的空白检,或者分解多个正则组?br />的字W串{问题?/p>

    Oracle 10g支持正则表达式的四个新函数分别是QREGEXP_LIKE、REGEXP_INSTR、REGEXP_S STR、和REGEXP_REPLACE?br />它们使用POSIX 正则表达式代替了老的癑ֈP%Q和通配W(_Q字W?/p>


    REGEXP_REPLACE(source_string,pattern,replace_string,position,occurtence,match_parameter)函数(10g新函?
    ?q?字符串替换函数。相当于增强的replace函数。Source_string指定源字W表辑ּQpattern指定规则表达 式;replace_string指定用于替换的字W串Qposition指定起始搜烦位置Qoccurtence指定替换出现的第n个字W?Ԍmatch_parameter指定默认匚w操作的文本串?br />其中replace_string,position,occurtence,match_parameter参数都是可选的?/p>


    REGEXP_S STR(source_string, pattern[,position [, occurrence[, match_parameter]]])函数(10g新函?
    ?qͼq回匚w模式的子字符丌Ӏ相当于增强的s str函数。Source_string指定源字W表辑ּQpattern指定规则表达 式;position指定起始搜烦位置Qoccurtence指定替换出现的第n个字W串Qmatch_parameter指定默认匚w操作的文本串?br />其中position,occurtence,match_parameter参数都是可选的

    match_option的取值如下:
    'c’   说明在进行匹配时区分大小写(~省|Q?br />'i'   说明在进行匹配时不区分大写Q?br />'n'   允许使用可以匚wL字符的操作符Q?br />'m'   x作ؓ一个包含多行的字符丌Ӏ?/p>

    REGEXP_LIKE(source_string, pattern[, match_parameter])函数(10g新函?
    描述Q返回满_配模式的字符丌Ӏ相当于增强的like函数。Source_string指定源字W表辑ּQpattern指定规则表达式;match_parameter指定默认匚w操作的文本串?br />其中position,occurtence,match_parameter参数都是可选的


    REGEXP_INSTR(source_string, pattern[, start_position[, occurrence[, return_option[, match_parameter]]]])函数(10g新函?
    ?q? 该函数查?pattern Qƈq回该模式的W一个位|。您可以随意指定您想要开始搜索的 start_position?occurrence 参数默认?1Q除非您指定您要查找接下来出现的一个模式。return_option 的默认gؓ 0Q它q回该模式的起始位置Qgؓ 1 则返回符合匹配条件的下一个字W的起始位置

    Ҏ字符Q?br />'^' 匚w输入字符串的开始位|,在方括号表达式中使用Q此时它表示不接受该字符集合?br />'$' 匚w输入字符串的l尾位置。如果设|了 RegExp 对象?Multiline 属性,?$ 也匹?'n' ?'r'?br />'.' 匚w除换行符 n之外的Q何单字符?br />'?' 匚w前面的子表达式零ơ或一ơ?br />'*' 匚w前面的子表达式零ơ或多次?br />'+' 匚w前面的子表达式一ơ或多次?br />'( )' 标记一个子表达式的开始和l束位置?br />'[]' 标记一个中括号表达式?br />'{m,n}' 一个精地出现ơ数范围Qm= <出现ơ数 <=nQ?{m}'表示出现mơ,'{m,}'表示臛_出现mơ?br />' |' 指明两项之间的一个选择。例?^([a-z]+ |[0-9]+)$'表示所有小写字母或数字l合成的字符丌Ӏ?br />num 匚w numQ其?num 是一个正整数。对所获取的匹配的引用?/p>


    正则表达式的一个很有用的特Ҏ可以保存子表辑ּ以后使用Q?被称为Backreferencing. 允许复杂的替换能力?br />如调整一个模式到新的位置或者指C代替的字W或者单词的位置. 被匹配的子表辑ּ存储在时缓冲区中, ~冲Z左到右编? 通过数字W号讉K?下面的例子列Z把名?aa bb cc 变成
    cc, bb, aa.
    Select REGEXP_REPLACE('aa bb cc','(.*) (.*) (.*)', '3, 2, 1') FROM d lQ?br />REGEXP_REPLACE('ELLENHILDISMIT
    cc, bb, aa

    字符:
    [[:alpha:]] M字母?br />[[:digit:]] M数字?br />[[:alnum:]] M字母和数字?br />[[:space:]] M白字W?br />[[:upper:]] M大写字母?br />[[:lower:]] M写字母?br />[[:punct:]] M标点W号?br />[[:xdigit:]] M16q制的数字,相当于[0-9a-fA-F]?/p>

    各种操作W的q算优先U?br />转义W?br />(), (?:), (?=), [] 圆括号和Ҏ?br />*, +, ?, {n}, {n,}, {n,m} 限定W?br />^, $, anymetacharacter 位置和顺?br />| “?#8221;操作

    --试数据
    create table test(mc varchar2(60));

    insert into test vals('112233445566778899');
    insert into test vals('22113344 5566778899');
    insert into testvals('33112244 5566778899');
    insert into test vals('44112233 5566 778899');
    insert into test vals('5511 2233 4466778899');
    insert into test vals('661122334455778899');
    insert into test vals('771122334455668899');
    insert into test vals('881122334455667799');
    insert into test vals('991122334455667788');
    insert into test vals('aabbccddee');
    insert into test vals('bbaaaccddee');
    insert into test vals('ccabbddee');
    insert into test vals('ddaabbccee');
    insert into test vals('eeaabbccdd');
    insert into test vals('ab123');
    insert into test vals('123xy');
    insert into test vals('007ab');
    insert into test vals('abcxy');
    insert into test vals('The final test is is is how to find duplicate words.');

    commit;

    一、REGEXP_LIKE

    select * from test where regexp_like(mc,'^a{1,3}');
    select * from test where regexp_like(mc,'a{1,3}');
    select * from test where regexp_like(mc,'^a.*e$');
    select * from test where regexp_like(mc,'^[[:lower:]] |[[:digit:]]');
    select * from test where regexp_like(mc,'^[[:lower:]]');
    Select mc FROM test Where REGEXP_LIKE(mc,'[^[:digit:]]');
    Select mc FROM test Where REGEXP_LIKE(mc,'^[^[:digit:]]');

    二、REGEXP_INSTR

    Select REGEXP_INSTR(mc,'[[:digit:]]$') from test;
    Select REGEXP_INSTR(mc,'[[:digit:]]+$') from test;
    Select REGEXP_INSTR('The price is $400.','$[[:digit:]]+') FROM D L;
    Select REGEXP_INSTR('onetwothree','[^[[:lower:]]]') FROM D L;
    Select REGEXP_INSTR(',,,,,','[^,]*') FROM D L;
    Select REGEXP_INSTR(',,,,,','[^,]') FROM D L;

    三、REGEXP_S STR

    SELECT REGEXP_S STR(mc,'[a-z]+') FROM test;
    SELECT REGEXP_S STR(mc,'[0-9]+') FROM test;
    SELECT REGEXP_S STR('aababcde','^a.*b') FROM D L;

    四、REGEXP_REPLACE

    Select REGEXP_REPLACE('Joe Smith','( ){2,}', ',') AS RX_REPLACE FROM d l;
    Select REGEXP_REPLACE('aa bb cc','(.*) (.*) (.*)', '3, 2, 1') FROM d lQ?/p>



    ]]>
    (?oracle 正则表达?/title><link>http://www.aygfsteel.com/hwpok/archive/2011/08/22/357018.html</link><dc:creator>惠万?/dc:creator><author>惠万?/author><pubDate>Mon, 22 Aug 2011 02:34:00 GMT</pubDate><guid>http://www.aygfsteel.com/hwpok/archive/2011/08/22/357018.html</guid><wfw:comment>http://www.aygfsteel.com/hwpok/comments/357018.html</wfw:comment><comments>http://www.aygfsteel.com/hwpok/archive/2011/08/22/357018.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/hwpok/comments/commentRss/357018.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/hwpok/services/trackbacks/357018.html</trackback:ping><description><![CDATA[环境: oracle 10g r2 <br />更多内容可以参?<br /><font size="3"><span style="color: rgb(255,0,0); font-weight: bold"><<Oracle? Database Application Developer's Guide - Fundamentals 10g Release 2 (10.2)>></span></font><br /><br />必须明白的是Qoracle的正则表辑ּ和其它的语言的ƈ不是完全一栗?br />oracle支持以下标准的正则表辑ּ:<br /> <ul><li>IEEE Portable Operating System Interface (POSIX) standard draft 1003.2/D11.2</li></ul> <ul><li>Unicode Regular Expression Guidelines of the Unicode Consortium</li></ul> <ul><li>Extends the matching capabilities for multilingual data beyond what is specified  in the POSIX standard(即posix的多语言支持).<br /></li></ul> <ul><li>Adds support for the common Perl regular expression extensions that are not</li></ul>          included in the POSIX standard but do not conflict with it. Oracle Database<br /> <div style="margin-left: 40px">provides built-in support for some of the most heavily used Perl regular<br />expression operators, for example, character class shortcuts, the non-greedy<br />modifier, and so on(即部分perl标准,不包含在posix标准,但是又不与之冲突?<br /></div><br /><br />---2008-09-08 做了个实验,关键的要Ҏ三个,重复ơ数{},+,*,?   <br />---以及匚w模式[...] ,[^...],(...),(...)<br />--以及转义W号 \d,\D,\\{?br />------------------------------------------------------------------------------------------------------------------<br />                                     ID VALUE<br />--------------------------------------- ----------------------------------------<br />                                      9 lzf is a chinese<br />                                     10 1231231231lzf<br />                                     11 perfect<br />                                      1 13625061300<br />                                      2 059183383335<br />                                      3 13959029697<br />                                      4 13950323157<br />                                      5 who is your daddy?<br />                                      6 who are you?<br />                                      6 what is your name?<br />                                      6 I am 20 years old!<br />                                      7 股市下挫?100点左?br />                                      8 lzf ' is very happy 136ok<br />                                      8 do you know lzf,ok?<br />                                      8 ok,lzf is my brother<br />------------------------------------------------------------------------------------------------------------------<br /><br />select * from  test_reg where regexp_like(value,'^1(.+)7$')  --1开_7l尾的内?br />select * from  test_reg where regexp_like(value,'\d+')       --一个或者多个数?br />select * from  test_reg where regexp_like(value,'^[a-zA-Z]{1,}[a-zA-Z]+$')  --全部字符?[:digit:]<br />select * from  test_reg where regexp_like(value,'^[0-9]{1,}[0-9]+$')  --全部数字?<br />select * from  test_reg where regexp_like(value,'[y][o][u]') --包含you<br />select * from  test_reg where regexp_like(value,'(you)') --包含you<br />select * from  test_reg where regexp_like(value,'[you]')     --包含y o u?不分序<br />select * from  test_reg where regexp_like(value,'(lzf){1,}(.){0,}(ok)') --包含lzf 和ok?  但是也仅仅限制与lzf 在ok?br />以上试验是在看了下文以及参考了OReilly.Oracle.PL.SQL.Programming.4th.Edition.Aug.2005.chs后作出的.<br />--------------<br /><font color="#ff0000"><strong>2010/08/04 增加以下例子</strong></font><br /><br />---<br />--?POSIX('开头的?以下几个表达式的l果都是一L?br />select  1 from dual where regexp_like('POSIX(ADDDDDD,Y,13)','^(POSIX\()([A-Z]+)(,)([RYN]{1})(,)\d{1,}?\)')<br /><br />select  1 from dual where regexp_like('POSIX(ADDDDDD,Y,13)','^(POSIX\()([A-Z]+)(,)([RYN]{1})(,)\d+\)')<br />select  1 from dual where regexp_like('POSIX(ADDDDDD,Y,13)','^(POSIX\()([A-Z]+)(,)([RYN]{1}),\d+\)')<br />select  1 from dual where regexp_like('POSIX(ADDDDDD,Y,13)','^(POSIX\()([A-Z]+),([RYN]{1}),\d+\)')<br />select  1 from dual where regexp_like('POSIX(ADDDDDD,Y,13)','^(POSIX\()([A-Z]+),([RYN]+),\d+\)')<br /><br />select  1 from dual where regexp_like('POSIX(ADDDDDD,Y,13)','^(POSIX\()([A-Z]+),[RYN]+,\d+\)')<br />select  1 from dual where regexp_like('POSIX(A,N,13)','^(POSIX\()([A-Z]+),[RYN]+,\d+\)')<br />----------<br />--位于字符串中的串<br />select  1 from dual where regexp_like('POSIX(A,N,13)','^(POSIX\()([A-Z]+),[RYN]+,\d+\)')<br />select  1 from dual where regexp_like('P_OSI_X(JYL_GP_R,N,13)','^[A-Z_]+\(([A-Z_]+),[RYN]+,\d+\)')<br /><br />--试regexp_substr,基本的还是regexp_like<br /> <table border="1" cellspacing="1" cellpadding="1" width="708" height="238"> <tbody> <tr> <td> <font size="1">SQL> select regexp_substr('P_OSI_X(JYL_GP_R,N,13)+AVG(JYL_JJ_R,Y,3)','^[A-Z_]+\(([A-Z_]+),[RYN]+,\d+\)') FROM DUAL<br />  2  /<br /> <br />REGEXP_SUBSTR('P_OSI_X(JYL_GP_<br />------------------------------<br />P_OSI_X(JYL_GP_R,N,13)<br /> <br />SQL> select regexp_substr('P_OSI_X(JYL_GP_R,N,13)+AVG(JYL_JJ_R,Y,3)','[A-Z_]+\(([A-Z_]+),[RYN]+,\d+\)',1,2) FROM DUAL<br />  2  /<br /> <br />REGEXP_SUBSTR('P_OSI_X(JYL_GP_<br />------------------------------<br />AVG(JYL_JJ_R,Y,3)</font></td></tr></tbody></table><br />2010/08/26 新增例子<br /> <table border="1" cellspacing="1" cellpadding="1" width="80%"> <tbody> <tr> <td>-- delete the first ()<br /> select regexp_replace('dad(disc_id=50003118)add','(^([A-Z]{1,}\()|(\)[A-Z]{1,})$)','',1,0,'i') FROM DUAL<br />--<br />match pattern<br />using classes<br />select regexp_substr(upper('dad(ssdsd89\9 dd== (sddf(d)),sdsd)add'),'^([A-Z]{1,}\()[[:space:][:alnum:]\,\_\(\)\=]{1,}\)[A-Z]{1,}$',1,1,'i') FROM DUAL<br /><br /></td></tr></tbody></table>   <br /> <hr style="width: 100%; height: 2px" /> <font style="color: rgb(255,0,0)" size="4">OReilly. 的参考内?/font><br />Section A.1.  Metacharacters<br /><br /> <table style="font-family: 隶书" border="0" cellspacing="0" cellpadding="0" width="100%"> <tbody> <tr> <td valign="top"> <h3><font size="2">A.1. Metacharacters</font></h3> <p><font size="2">The R2 column in <a ><font color="#5e8296">Tables A-1</font></a> through <a ><font color="#5e8296">A-3</font></a> indicates which metacharacters were introduced in Oracle Database 10<span>g</span> Release 2. All others were introduced in Release 1.</font></p> <p> </p> <table rules="all" cellspacing="0" cellpadding="4" width="100%" frame="hsides"> <caption> <h5><font size="2">Table A-1. Character-matching metacharacters</font></h5></caption> <colgroup> <col> <col> <col> <thead> <tr> <th scope="col" align="left"> <p><font size="2">Syntax</font></p></th> <th scope="col" align="left"> <p><font size="2">R2?</font></p></th> <th scope="col" align="left"> <p><font size="2">Description</font></p></th></tr></thead> <tbody> <tr> <td align="left"> <p><font size="2">.</font></p></td> <td><font size="2"> </font></td> <td align="left"> <p><font size="2">Matches any single character except for newline. Will match newline when the n flag is set. On Windows, Linux, and Unix platforms, chr(10) is recognized as the newline.</font></p></td></tr> <tr> <td align="left"> <p><font size="2">[ ... ]</font></p></td> <td><font size="2"> </font></td> <td align="left"> <p><font size="2">Defines a <span>matching list</span> that matches any character listed between the brackets. You may specify ranges of characters, as in a-z. These ranges are interpreted based on the NLS_SORT setting.</font></p> <p><font size="2">A dash (-) is a literal when it occurs first or last in the list (e.g., [abc-]). A closing-bracket (]) is a literal when it occurs first in the list (e.g., []abc]). A caret (^) in the first position makes the list a <span>nonmatching list</span> (see the next entry).</font></p></td></tr> <tr> <td align="left"> <p><font size="2">[^ ... ]</font></p></td> <td><font size="2"> </font></td> <td align="left"> <p><font size="2">Matches any character not listed between the brackets. Referred to as a "nonmatching list."</font></p></td></tr> <tr> <td align="left"> <p><font size="2">[:<span>class</span>:]</font></p></td> <td><font size="2"> </font></td> <td align="left"> <p><font size="2">Matches any character that belongs to the specified character class. May only be used within a matching list: [[:class:]abc] is a valid expression, [:class:]abc is not. <a ><font color="#5e8296">Table A-5</font></a> lists the valid character class names.</font></p></td></tr> <tr> <td align="left"> <p><font size="2">[.<span>coll</span>.]</font></p></td> <td><font size="2"> </font></td> <td align="left"> <p><font size="2">Matches the specified collation element, which may be one or more characters. May only be used within a matching list. For example, the expression [[.ch.]] matches the Spanish letter "ch". <a ><font color="#5e8296">Table A-4</font></a> lists the valid collation elements.</font></p></td></tr> <tr> <td align="left"> <p><font size="2">[=<span>char</span>=]</font></p></td> <td><font size="2"> </font></td> <td align="left"> <p><font size="2">Matches all characters that share the same base character as char. May be used only within a matching list. For example, [[=e=]] matches any of: "eé?è???E".</font></p></td></tr> <tr> <td align="left"> <p><font size="2">\d</font></p></td> <td align="left"> <p><font size="2"><br /></font></p></td> <td align="left"> <p><font size="2">Matches any digit. Equivalent to [[:digit:]].</font></p></td></tr> <tr> <td align="left"> <p><font size="2">\D</font></p></td> <td align="left"> <p><font size="2"><br /></font></p></td> <td align="left"> <p><font size="2">Matches any nondigit. Equivalent to [^[:digit:]]</font></p></td></tr> <tr> <td align="left"> <p><font size="2">\w</font></p></td> <td align="left"> <p><font size="2"><br /></font></p></td> <td align="left"> <p><font size="2">Matches any "word character." Word characters are defined to be alphabetic characters, numeric characters, and the underscore.</font></p></td></tr> <tr> <td align="left"> <p><font size="2">\W</font></p></td> <td align="left"> <p><font size="2"><br /></font></p></td> <td align="left"> <p><font size="2">Matches any nonword character.</font></p></td></tr> <tr> <td align="left"> <p><font size="2">\s</font></p></td> <td align="left"> <p><font size="2"><br /></font></p></td> <td align="left"> <p><font size="2">Matches any whitespace character. Equivalent to [[:space:]].</font></p></td></tr> <tr> <td align="left"> <p><font size="2">\S</font></p></td> <td align="left"> <p><font size="2"><br /></font></p></td> <td align="left"> <p><font size="2">Matches nonwhitespace characters. Equivalent to [^[:space:]].</font></p></td></tr></tbody></table> <p> </p><font size="2"><br /></font> <p> </p> <table rules="all" cellspacing="0" cellpadding="4" width="100%" frame="hsides"> <caption> <h5><font size="2">Table A-2. Quantifiers</font></h5></caption> <colgroup> <col> <col> <col> <thead> <tr> <th scope="col" align="left"> <p><font size="2">Syntax</font></p></th> <th scope="col" align="left"> <p><font size="2">R2?</font></p></th> <th scope="col" align="left"> <p><font size="2">Description</font></p></th></tr></thead> <tbody> <tr> <td align="left"> <p><font size="2">+</font></p></td> <td><font size="2"> </font></td> <td align="left"> <p><font size="2">One or more</font></p></td></tr> <tr> <td align="left"> <p><font size="2">?</font></p></td> <td><font size="2"> </font></td> <td align="left"> <p><font size="2">Zero or one</font></p></td></tr> <tr> <td align="left"> <p><font size="2">*</font></p></td> <td><font size="2"> </font></td> <td align="left"> <p><font size="2">Zero or more</font></p></td></tr> <tr> <td align="left"> <p><font size="2">{<span>m</span>}</font></p></td> <td><font size="2"> </font></td> <td align="left"> <p><font size="2">Exactly <span>m</span> occurrences</font></p></td></tr> <tr> <td align="left"> <p><font size="2">{<span>m</span>,}</font></p></td> <td><font size="2"> </font></td> <td align="left"> <p><font size="2">At least <span>m</span> occurrences</font></p></td></tr> <tr> <td align="left"> <p><font size="2">{<span>m</span>,<span>n</span>}</font></p></td> <td><font size="2"> </font></td> <td align="left"> <p><font size="2">At least <span>m</span>, and at most <span>n</span> occurrences</font></p></td></tr> <tr> <td align="left"> <p><font size="2">+?</font></p></td> <td align="left"> <p><font size="2"><br /></font></p></td> <td align="left"> <p><font size="2">One or more, but nongreedy</font></p></td></tr> <tr> <td align="left"> <p><font size="2">??</font></p></td> <td align="left"> <p><font size="2"><br /></font></p></td> <td align="left"> <p><font size="2">Zero or one, but nongreedy</font></p></td></tr> <tr> <td align="left"> <p><font size="2">{<span>m</span>}?</font></p></td> <td align="left"> <p><font size="2"><br /></font></p></td> <td align="left"> <p><font size="2">The same as {<span>m</span>}</font></p></td></tr> <tr> <td align="left"> <p><font size="2">{<span>m</span>,}?</font></p></td> <td align="left"><font size="2"><br /></font></td> <td align="left"> <p><font size="2">At least <span>m</span> occurrences, but nongreedy and stops as soon as <span>m</span> occurrences are reached</font></p></td></tr> <tr> <td align="left"> <p><font size="2">{<span>m</span>,<span>n</span>}?</font></p></td> <td align="left"> <p><font size="2"><br /></font></p></td> <td align="left"> <p><font size="2">At least <span>m</span>, and at most <span>n</span> occurrences, but nongreedy; when possible, <span>m</span></font> occurrences are matched</p></td></tr></tbody></table> <p> </p><font size="2"><br /></font> <p> </p> <table rules="all" cellspacing="0" cellpadding="4" width="100%" frame="hsides"> <caption> <h5><font size="2">Table A-3. Other metacharacters</font></h5></caption> <colgroup> <col> <col> <col> <thead> <tr> <th scope="col" align="left"> <p><font size="2">Syntax</font></p></th> <th scope="col" align="left"> <p><font size="2">R2?</font></p></th> <th scope="col" align="left"> <p><font size="2">Description</font></p></th></tr></thead> <tbody> <tr> <td align="left"> <p><font size="2">|</font></p></td> <td><font size="2"> </font></td> <td align="left"> <p><font size="2">Specifies an alternation. An alternation within a subexpression doesn't extend beyond the subexpression.</font></p></td></tr> <tr> <td align="left"> <p><font size="2">( ...)</font></p></td> <td><font size="2"> </font></td> <td align="left"> <p><font size="2">Defines a subexpresson.</font></p></td></tr> <tr> <td align="left"> <p><font size="2">\<span>n</span></font></p></td> <td><font size="2"> </font></td> <td align="left"> <p><font size="2">References the text matched by the <span>n</span>th subexpression. Backreferences may range from \1 through \9.</font></p></td></tr> <tr> <td align="left"> <p><font size="2">\</font></p></td> <td><font size="2"> </font></td> <td align="left"> <p><font size="2">When not followed by a digit, the \ is an escape character. For example, use the pattern \\1 to look for a single backslash followed by the digit 1, use \( to look for an opening-parentheses (rather than begin a subexpression), etc.</font></p></td></tr> <tr> <td align="left"> <p><font size="2">^</font></p></td> <td><font size="2"> </font></td> <td align="left"> <p><font size="2">Anchors an expression to the beginning of the string (in multiline mode, to the beginning of a line).</font></p></td></tr> <tr> <td align="left"> <p><font size="2">$</font></p></td> <td><font size="2"> </font></td> <td align="left"> <p><font size="2">Anchors an expression to the end of the string (in multiline mode, to the end of a line).</font></p></td></tr> <tr> <td align="left"> <p><font size="2">\A</font></p></td> <td align="left"> <p><font size="2"><br /></font></p></td> <td align="left"> <p><font size="2">Anchors an expression to the beginning of the string regardless of whether multiline mode is specified.</font></p></td></tr> <tr> <td align="left"> <p><font size="2">\Z</font></p></td> <td align="left"> <p><font size="2"><br /></font></p></td> <td align="left"> <p><font size="2">Anchors an expression to the end of the string, or the a newline that happens to be ending a string, regardless of whether multiline mode is specified.</font></p></td></tr> <tr> <td align="left"> <p><font size="2">\z</font></p></td> <td align="left"> <p><font size="2"><br /></font></p></td> <td align="left"> <p><font size="2">Anchors an expression to the end of the string regardless of whether multiline mode is specified.</font></p></td></tr></tbody></table> <p> </p><font size="2"><br /></font> <p> </p> <table rules="all" cellspacing="0" cellpadding="4" width="100%" frame="hsides"> <caption> <h5><font size="2">Table A-4. Collation elements</font></h5></caption> <colgroup> <col> <col> <col> <col> <thead> <tr> <th scope="col" align="left"> <p><font size="2">NLS_SORT</font></p></th> <th colspan="4" scope="col" align="left"> <p><font size="2">Multicharacter collation elements</font></p></th></tr></thead> <tbody> <tr> <td align="left"> <p><font size="2">XDANISH</font></p></td> <td align="left"> <p><font size="2">aa</font></p> <p><font size="2">oe</font></p></td> <td align="left"> <p><font size="2">AA</font></p> <p><font size="2">OE</font></p></td> <td align="left"> <p><font size="2">Aa</font></p> <p><font size="2">Oe</font></p></td></tr> <tr> <td align="left"> <p><font size="2">XSPANISH</font></p></td> <td align="left"> <p><font size="2">ch</font></p> <p><font size="2">ll</font></p></td> <td align="left"> <p><font size="2">CH</font></p> <p><font size="2">LL</font></p></td> <td align="left"> <p><font size="2">Ch</font></p> <p><font size="2">Ll</font></p></td></tr> <tr> <td align="left"> <p><font size="2">XHUNGARIAN</font></p></td> <td align="left"> <p><font size="2">cs</font></p> <p><font size="2">gy</font></p> <p><font size="2">ly</font></p> <p><font size="2">ny</font></p> <p><font size="2">sz</font></p> <p><font size="2">ty</font></p> <p><font size="2">zs</font></p></td> <td align="left"> <p><font size="2">CS</font></p> <p><font size="2">GY</font></p> <p><font size="2">LY</font></p> <p><font size="2">NY</font></p> <p><font size="2">SZ</font></p> <p><font size="2">TY</font></p> <p><font size="2">ZS</font></p></td> <td align="left"> <p><font size="2">Cs</font></p> <p><font size="2">Gy</font></p> <p><font size="2">Ly</font></p> <p><font size="2">Ny</font></p> <p><font size="2">Sz</font></p> <p><font size="2">Ty</font></p> <p><font size="2">Zs</font></p></td></tr> <tr> <td align="left"> <p><font size="2">XCZECH</font></p></td> <td align="left"> <p><font size="2">ch</font></p></td> <td align="left"> <p><font size="2">CH</font></p></td> <td align="left"> <p><font size="2">Ch</font></p></td></tr> <tr> <td align="left"> <p><font size="2">XCZECH_PUNCTUATION</font></p></td> <td align="left"> <p><font size="2">ch</font></p></td> <td align="left"> <p><font size="2">CH</font></p></td> <td align="left"> <p><font size="2">Ch</font></p></td></tr> <tr> <td align="left"> <p><font size="2">XSLOVAK</font></p></td> <td align="left"> <p><font size="2">dz</font></p> <p><font size="2">d_</font></p> <p><font size="2">ch</font></p></td> <td align="left"> <p><font size="2">DZ</font></p> <p><font size="2">D_</font></p> <p><font size="2">CH</font></p></td> <td align="left"> <p><font size="2">Dz</font></p> <p><font size="2">D_</font></p> <p><font size="2">Ch</font></p></td></tr> <tr> <td align="left"> <p><font size="2">XCROATIAN</font></p></td> <td align="left"> <p><font size="2">d_</font></p> <p><font size="2">lj</font></p> <p><font size="2">nj</font></p></td> <td align="left"> <p><font size="2">D_</font></p> <p><font size="2">LJ</font></p> <p><font size="2">Nj</font></p></td> <td align="left"> <p><font size="2">D_</font></p> <p><font size="2">Lj</font></p> <p><font size="2">NJ</font></p></td></tr></tbody></table> <p> </p><font size="2"><br /></font> <p> </p> <table rules="all" cellspacing="0" cellpadding="4" width="100%" frame="hsides"> <caption> <h5><font size="2">Table A-5. Supported character classes</font></h5></caption> <colgroup> <col> <col> <thead> <tr> <th scope="col" align="left"> <p><font size="2">Class</font></p></th> <th scope="col" align="left"> <p><font size="2">Description</font></p></th></tr></thead> <tbody> <tr> <td align="left"> <p><font size="2">[:alnum:]</font></p></td> <td align="left"> <p><font size="2">Alphanumeric characters (same as [:alpha:] + [:digit:])</font></p></td></tr> <tr> <td align="left"> <p><font size="2">[:alpha:]</font></p></td> <td align="left"> <p><font size="2">Alphabetic characters only</font></p></td></tr> <tr> <td align="left"> <p><font size="2">[:blank:]</font></p></td> <td align="left"> <p><font size="2">Blank space characters, such as space and tab</font></p></td></tr> <tr> <td align="left"> <p><font size="2">[:cntrl:]</font></p></td> <td align="left"> <p><font size="2">Nonprinting, or control characters</font></p></td></tr> <tr> <td align="left"> <p><font size="2">[:digit:]</font></p></td> <td align="left"> <p><font size="2">Numeric digits</font></p></td></tr> <tr> <td align="left"> <p><font size="2">[:graph:]</font></p></td> <td align="left"> <p><font size="2">Graphical characters (same as [:punct:] + [:upper:] + [:lower:] + [:digit:])</font></p></td></tr> <tr> <td align="left"> <p><font size="2">[:lower:]</font></p></td> <td align="left"> <p><font size="2">Lowercase letters</font></p></td></tr> <tr> <td align="left"> <p><font size="2">[:print:]</font></p></td> <td align="left"> <p><font size="2">Printable characters</font></p></td></tr> <tr> <td align="left"> <p><font size="2">[:punct:]</font></p></td> <td align="left"> <p><font size="2">Punctuation characters</font></p></td></tr> <tr> <td align="left"> <p><font size="2">[:space:]</font></p></td> <td align="left"> <p><font size="2">Whitespace characters such as space, formfeed, newline, carriage return, horizontal tab, and vertical tab</font></p></td></tr> <tr> <td align="left"> <p><font size="2">[:upper:]</font></p></td> <td align="left"> <p><font size="2">Uppercase letters</font></p></td></tr> <tr> <td align="left"> <p><font size="2">[:xdigit:]</font></p></td> <td align="left"> <p><font size="2">Hexadecimal characters</font></p></td></tr></tbody></table> </td></tr></tbody></table><br />对于cȝ使用Q要特别注意点,因ؓ基本上要包含在一对中括号中?br /><span style="font-weight: bold">例一Q检验非汉字的函?/span><br />例如可以定义一个检验非汉字的函敎ͼ不考虑其它UNICODE<br />CREATE OR REPLACE Function func_existNormalChar(chars In Varchar2) Return Pls_Integer<br />Is<br />  vResult Pls_Integer;<br />Begin<br />  Select 1<br />     Into vresult From dual<br />        Where regexp_like(chars,'[!-~ Q。、?’“Q:『』【】+Q-——~!◎QEQ?#8230;…※×Q)]+')<br />        Or    regexp_like(chars,'[[:space:]+]')<br />        Or    regexp_like(chars,'[[:blank:]+]')<br />        Or    regexp_like(chars,'[[:cntrl:]+]');<br />  Return vresult;<br />Exception<br />  When Others Then<br />    Return 0;<br />End;<br /><br /><span style="font-weight: bold">例二Q出现次数的?/span><br /> <table style="border-bottom: 1px solid; border-left: 1px solid; border-top: 1px solid; border-right: 1px solid" border="1" cellspacing="1" cellpadding="1" width="100%"> <tbody> <tr> <td> <font size="2">序号</font></td> <td><font size="2"> 例子</font></td> <td><font size="2"> l果</font></td> <td><font size="2"> 说明</font></td></tr> <tr> <td><font size="2"> 1</font></td> <td><font size="2">regexp_replace('a12c','[[:digit:]]+','*')</font></td> <td><font size="2"> a*c</font></td> <td><font size="2"> 试"+",卛_Cơ或者更多次?׃采取的是q箋的匹?所以结果上是把多个数字合ƈZ个替代字W串,Z理解q箋匚w的意?看序?更能够明?q是M偏少的模?/font></td></tr> <tr> <td><font size="2"> 2</font></td> <td><font size="2">regexp_replace('a12c','[[:digit:]]?','*')</font></td> <td><font size="2"> *a***c*</font></td> <td><font size="2"> 试"?",?或者一?q个W号,会在L一个其它字W边上插入一个假讑և现的匚wcdW号,如例?a的左Ҏ来是没有,但是表达式认为数字字W在a的左边出C0?q个是成立的).然后q要逐个替换q去,q是M偏多的模?q于匚w和逐个匚wl合<br /></font></td></tr> <tr> <td><font size="2"> 3</font></td> <td><font size="2">regexp_replace('a12c','[[:digit:]]*','*') <br /></font></td> <td><font size="2"> *a**c*</font></td> <td><font size="2"> 试"*",?或者更多次?q个模式cM?cM,采取q箋匚w+多余匚w</font></td></tr> <tr> <td><font size="2"> 4</font></td> <td><font size="2">regexp_replace('a12c','[[:digit:]]+?','*') <br /></font></td> <td><font size="2"> a**c</font></td> <td><font size="2"> 试"+?",匚w在前面一ơ或者多ơ的?采取的是逐个匚w的策?如果有连l的情况出现),q个是通常最希望使用的模?</font></td></tr> <tr> <td><font size="2"> 5</font></td> <td><font size="2">regexp_replace('a12c','[[:digit:]]*?','*')</font></td> <td><font size="2"> *a*1*2*c*</font></td> <td><font size="2"> 试"*?",匚w0或者更多次,<span style="color: rgb(255,0,0)">难于理解! 但可以简单地理解Zؓ在各个字W中以及两边插入替代?</span><br /></font></td></tr> <tr> <td><font size="2"> 6</font></td> <td><font size="2">regexp_replace('a12c','[[:digit:]]??','*')</font></td> <td><font size="2"> *a*1*2*c*</font></td> <td><font size="2"> 试"??",匚w0或??<span style="color: rgb(255,0,0)">难于理解? </span></font><font style="color: rgb(255,0,0)" size="2">但可以简单地理解Zؓ在各个字W中以及两边插入替代?</font></td></tr> <tr> <td><font size="2"> 7</font></td> <td><font size="2">regexp_replace('a12c','[[:digit:]]{1,}','*') <br /></font></td> <td><font size="2"> a*c</font></td> <td><font size="2"> 试{1,},?,l果已经说明</font></td></tr> <tr> <td><font size="2"> 8</font></td> <td><font size="2"> </font></td> <td><font size="2"> </font></td> <td><font size="2"> </font></td></tr> <tr> <td><font size="2"> 9</font></td> <td><font size="2">regexp_replace('a1x2c','[[:digit:]]+','*')</font></td> <td><font size="2"> a*x*c</font></td> <td><font size="2">试"+",q个例子说明,如果被检的字符串中特定的匹配串如果不是q箋?多次),那么替代的还是属于正常的范围.</font></td></tr></tbody></table> <p><br />其它的次数模式暂时没有测?对于 *,?,+ ,*?,+?,??,基本有其对应的模?{n,m}? 或者是{n,}? ,除了*,*?之外,因ؓ此二者表C的都是0或者多?大于1),无法用{n,m}的方式表C?<br /><br /><span style="font-weight: bold">例三:多个cȝq用</span><br />很多时候用类q是很方便的,<font size="2">例如[:digit:]</font>表示数字.[:space:]表示I格,换行,回R{等.<br />如果希望把特定串中的数字和回车空格等都替换ؓ'-',则可以?"|"(替代操作W?其实是cM一般高U语a中的或操作符?.<br />select  regexp_replace('adfa jkjk jk<br />jk','([[:digit:]]+?)|([[:space:]]+?)','-')  from dual;<br />l果如下:<br />adfa-jkjk-jk-jk<br />已经把空格和回RW号都替换ؓ'-'?<br />又例?<br />Select regexp_replace('a1b c1d jk<br />jk','([[:digit:]]+?)|([[:space:]]+?)','-') From dual<br />l果如下:<br />a-b-c-d-jk-jk<br /><br />例四:q代替换<br />例如希望把以下串替换?br />'<xxxx   <often>  <common>   <fat>   >'<br /><br /></p> <hr id="null" /> <strong>关于范围操作W号 <font color="#0000ff">-</font></strong> <p>发音Q横杆或者减?/p> <p>在列表匹配操作情况下Q如果没有特别的讄Q就是表C匹配一个范_</p> <p> </p> <table border="1" cellspacing="1" cellpadding="1" width="80%"> <tbody> <tr> <td> <p><font size="2">例子Q把字符串中非数?-()的符h换ؓI?/font></p> <p><font size="2">q是一个不成功的匹?/font></p> <p><font size="2">SQL> select regexp_replace('1+[2c- 3([ad]km,4','[^0-9\+\-\(\)]','',1) from dual;<br /> <br />REGEXP_REPLACE('1+[2C-3([AD]KM<br />------------------------------<br />1+23(4</font></p> <p><font size="2">q也是一个错误的匚wQ因为减可个时候表CZ个范?br />SQL> select regexp_replace('1+[2c- 3([ad]km,4','[^0-9\+-\(\)]','',1) from dual;<br /> <br />REGEXP_REPLACE('1+[2C-3([AD]KM<br />------------------------------<br />1+[2-3([,4</font></p> <p><font size="2">二者的区别在于单独的一个减P如果前面没有跟上斜杠\Q那么就是表C_否则是减号本n?/font></p> <p><font size="2">但即使如此,依然没有辑ֈ目的Q第一个把减号q是l去除了Q虽然排除了其它的需要排除的W号Q?/font></p> <p><font size="2">W二个,则是当作范围W号Q大部分的没有排除掉?/font></p> <p><font size="2">但是不太明白的是Q按照oracle文档的约定,在范围匹配中形如[\-]表示匚w一个减PZ依然匚w补上了,其是当夹着其它需要匹配的模式的时候?/font></p> <p><font size="2">现在只能试着把这个模式放在最后:</font></p> <p><font size="2">SQL> select regexp_replace('1+[2c- 3([ad4','[^0-9\(+\)\-]','',1) from dual<br />  2  /<br /> <br />REGEXP_REPLACE('1+[2C-3([AD4',<br />------------------------------<br />1+2-3(4</font></p> <p><font size="2">l果是可以,因ؓ模式"\-"被放C范围中的ַ?/font></p> <p><font size="2">那是文档不全Q还是理解不透彻了,</font></p> <p><font size="2">看来以后遇到q样的问题还是先把减h到尾巴去吧?/font></p></td></tr></tbody></table><img src ="http://www.aygfsteel.com/hwpok/aggbug/357018.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/hwpok/" target="_blank">惠万?/a> 2011-08-22 10:34 <a href="http://www.aygfsteel.com/hwpok/archive/2011/08/22/357018.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 创徏dblink(1)http://www.aygfsteel.com/hwpok/archive/2011/08/16/356606.html惠万?/dc:creator>惠万?/author>Tue, 16 Aug 2011 01:47:00 GMThttp://www.aygfsteel.com/hwpok/archive/2011/08/16/356606.htmlhttp://www.aygfsteel.com/hwpok/comments/356606.htmlhttp://www.aygfsteel.com/hwpok/archive/2011/08/16/356606.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/356606.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/356606.html      当用戯跨本地数据库Q访问另外一个数据库表中的数据时Q本地数据库中必dZq程数据库的dblink,通过dblink本地数据库可以像讉K本地数据库一栯问远E数据库表中的数据。下面讲介绍如何在本地数据库中创建dblink.

      创徏dblink一般有两种方式Q不q在创徏dblink之前用户必须有创建dblink的权限。想知道有关dblink的权限,以sys用户d到本地数据库Q?nbsp;  

    select * from user_sys_privs t where t.privilege like upper('%link%');

         l果如下:
       
      可以看出在数据库中dblink有三U权?
          1).CREATE DATABASE LINKQ所创徏的dblink只能是创能使用Q别的用户用不了)
          2).CREATE PUBLIC DATABASE LINKQpublic表示所创徏的dblink所有用户都可以使用Q?br />      3).DROP PUBLIC DATABASE LINK

      在sys用户下,把CREATE PUBLIC DATABASE LINKQDROP PUBLIC DATABASE LINK权限授予l你的用?/p>

    grant CREATE PUBLIC DATABASE LINKQ?/span>DROP PUBLIC DATABASE LINK to scott;


      然后以scott用户d本地数据?/p>

      1.创徏dblink的第一U方式,是在本地数据库tnsnames.ora文g中配|了要远E访问的数据库?/p>

    create public database link to_bylw connect to scott identified by tiger using 'bylw';


      其中to_bylw是你创徏的dblink名字Qbylw是远E数据库的实例名Qscott/tiger是登录到q程数据库的用户/密码。然后在本地数据库中通过dblink讉Kq程数据?bylw'中scott.tb_test?sql语句如下所C?/p>

    select * from scott.tb_test@to_bylw;

     

      2.创徏dblink的第二种方式Q是在本地数据库tnsnames.ora文g中没有配|要讉K的远E数据库Q?/p>

    create database link link_em
       connect 
    to mydata identified by mydata##
       using 
    '(DESCRIPTION =
                  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.139)(PORT = 1521))
                  (CONNECT_DATA =
                     (SERVER = DEDICATED)
                     (SERVICE_NAME = ORCL)
                   )
                 )
    ';
       个h比较喜欢W二U创建方?

    ]]>
    oracle 外连?/title><link>http://www.aygfsteel.com/hwpok/archive/2011/07/14/354339.html</link><dc:creator>惠万?/dc:creator><author>惠万?/author><pubDate>Thu, 14 Jul 2011 09:54:00 GMT</pubDate><guid>http://www.aygfsteel.com/hwpok/archive/2011/07/14/354339.html</guid><wfw:comment>http://www.aygfsteel.com/hwpok/comments/354339.html</wfw:comment><comments>http://www.aygfsteel.com/hwpok/archive/2011/07/14/354339.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/hwpok/comments/commentRss/354339.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/hwpok/services/trackbacks/354339.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; "><br /></span><span style="color: #008080; ">--</span><span style="color: #008080; ">用户?/span><span style="color: #008080; "><br /></span><span style="color: #0000FF; ">CREATE</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">TABLE</span><span style="color: #000000; "> t_user<br />(<br />       ID </span><span style="color: #000000; font-weight: bold; ">NUMBER</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">PRIMARY</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">KEY</span><span style="color: #000000; ">,<br />       NAME </span><span style="color: #000000; font-weight: bold; ">VARCHAR2</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">32</span><span style="color: #000000; ">)<br />);<br /><br /></span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; "> t_user(ID,NAME) </span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; "> (</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">1</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">n</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; "> t_user(ID,NAME) </span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; "> (</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">2</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">钱</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; "> t_user(ID,NAME) </span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; "> (</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">3</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">孙</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; "> t_user(ID,NAME) </span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; "> (</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">4</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">李</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; "> t_user(ID,NAME) </span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; "> (</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">5</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">周</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; "> t_user(ID,NAME) </span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; "> (</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">6</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">吴</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; "> t_user(ID,NAME) </span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; "> (</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">7</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">郑</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; "> t_user(ID,NAME) </span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; "> (</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">8</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">王</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br /><br /></span><span style="color: #008080; ">--</span><span style="color: #008080; ">角色?/span><span style="color: #008080; "><br /></span><span style="color: #0000FF; ">CREATE</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">TABLE</span><span style="color: #000000; "> t_role<br />(<br />     ID </span><span style="color: #000000; font-weight: bold; ">NUMBER</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">PRIMARY</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">KEY</span><span style="color: #000000; ">,<br />     NAME </span><span style="color: #000000; font-weight: bold; ">VARCHAR2</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">32</span><span style="color: #000000; ">)<br />);<br /><br /></span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; "> t_role(ID,NAME) </span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; "> (</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">1</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">늇</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; "> t_role(ID,NAME) </span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; "> (</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">2</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">钱颖</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; "> t_role(ID,NAME) </span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; "> (</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">3</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">孙丽</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; "> t_role(ID,NAME) </span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; "> (</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">4</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">李^</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br /><br /></span><span style="color: #0000FF; ">SELECT</span><span style="color: #000000; "> </span><span style="color: #808080; ">*</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">FROM</span><span style="color: #000000; "> t_user;<br /></span><span style="color: #0000FF; ">SELECT</span><span style="color: #000000; "> </span><span style="color: #808080; ">*</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">FROM</span><span style="color: #000000; "> t_role;<br /><br /></span><span style="color: #008080; ">--</span><span style="color: #008080; "> 自然q接</span><span style="color: #008080; "><br /></span><span style="color: #0000FF; ">SELECT</span><span style="color: #000000; "> t1.id, t1.name, t2.id,t2.name </span><span style="color: #0000FF; ">FROM</span><span style="color: #000000; "> t_user t1, t_role t2;<br /><br /></span><span style="color: #008080; ">--</span><span style="color: #008080; ">相等q接</span><span style="color: #008080; "><br /></span><span style="color: #0000FF; ">SELECT</span><span style="color: #000000; "> t1.id, t1.name, t2.id,t2.name </span><span style="color: #0000FF; ">FROM</span><span style="color: #000000; "> t_user t1, t_role t2 </span><span style="color: #0000FF; ">WHERE</span><span style="color: #000000; "> t1.id</span><span style="color: #808080; ">=</span><span style="color: #000000; ">t2.id(</span><span style="color: #808080; ">+</span><span style="color: #000000; ">);<br /><br /></span><span style="color: #008080; ">--</span><span style="color: #008080; ">外连?是由加号所在另一侧的?链接到加h在的一?</span><span style="color: #008080; "><br /></span><span style="color: #0000FF; ">SELECT</span><span style="color: #000000; "> t1.id, t1.name, t2.id,t2.name </span><span style="color: #0000FF; ">FROM</span><span style="color: #000000; "> t_user t1, t_role t2 </span><span style="color: #0000FF; ">WHERE</span><span style="color: #000000; "> t2.id(</span><span style="color: #808080; ">+</span><span style="color: #000000; ">)</span><span style="color: #808080; ">=</span><span style="color: #000000; ">t1.id </span><span style="color: #808080; ">AND</span><span style="color: #000000; "> t2.id(</span><span style="color: #808080; ">+</span><span style="color: #000000; ">)</span><span style="color: #808080; ">=</span><span style="color: #800000; font-weight: bold; ">4</span><span style="color: #000000; ">;</span></div><img src ="http://www.aygfsteel.com/hwpok/aggbug/354339.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/hwpok/" target="_blank">惠万?/a> 2011-07-14 17:54 <a href="http://www.aygfsteel.com/hwpok/archive/2011/07/14/354339.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 对象cd(? 单对?/title><link>http://www.aygfsteel.com/hwpok/archive/2011/07/14/354321.html</link><dc:creator>惠万?/dc:creator><author>惠万?/author><pubDate>Thu, 14 Jul 2011 06:17:00 GMT</pubDate><guid>http://www.aygfsteel.com/hwpok/archive/2011/07/14/354321.html</guid><wfw:comment>http://www.aygfsteel.com/hwpok/comments/354321.html</wfw:comment><comments>http://www.aygfsteel.com/hwpok/archive/2011/07/14/354321.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/hwpok/comments/commentRss/354321.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/hwpok/services/trackbacks/354321.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">--</span><span style="color: #008080; "> 建立对象cd</span><span style="color: #008080; "><br /></span><span style="color: #0000FF; ">CREATE</span><span style="color: #000000; "> </span><span style="color: #808080; ">OR</span><span style="color: #000000; "> </span><span style="color: #FF00FF; ">REPLACE</span><span style="color: #000000; "> TYPE person_type2 </span><span style="color: #0000FF; ">AS</span><span style="color: #000000; "> OBJECT<br />(<br />       ID </span><span style="color: #000000; font-weight: bold; ">NUMBER</span><span style="color: #000000; ">,<br />       NAME </span><span style="color: #000000; font-weight: bold; ">VARCHAR2</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">20</span><span style="color: #000000; ">),<br />       phone </span><span style="color: #000000; font-weight: bold; ">VARCHAR2</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">20</span><span style="color: #000000; ">),<br />       address </span><span style="color: #000000; font-weight: bold; ">VARCHAR2</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">64</span><span style="color: #000000; ">),<br />       CONSTRUCTOR </span><span style="color: #0000FF; ">FUNCTION</span><span style="color: #000000; "> person_type2<br />       (<br />            ID </span><span style="color: #000000; font-weight: bold; ">NUMBER</span><span style="color: #000000; ">,<br />            NAME </span><span style="color: #000000; font-weight: bold; ">VARCHAR2</span><span style="color: #000000; "><br />       ) </span><span style="color: #0000FF; ">RETURN</span><span style="color: #000000; "> SELF </span><span style="color: #0000FF; ">AS</span><span style="color: #000000; "> RESULT,<br />       MEMBER </span><span style="color: #0000FF; ">PROCEDURE</span><span style="color: #000000; "> change_address(addr </span><span style="color: #000000; font-weight: bold; ">VARCHAR2</span><span style="color: #000000; ">),<br />       MEMBER </span><span style="color: #0000FF; ">FUNCTION</span><span style="color: #000000; "> get_info </span><span style="color: #0000FF; ">RETURN</span><span style="color: #000000; "> </span><span style="color: #000000; font-weight: bold; ">VARCHAR2</span><span style="color: #000000; "><br />);<br /><br /></span><span style="color: #008080; ">--</span><span style="color: #008080; "> 建立对象cd</span><span style="color: #008080; "><br /></span><span style="color: #0000FF; ">CREATE</span><span style="color: #000000; "> </span><span style="color: #808080; ">OR</span><span style="color: #000000; "> </span><span style="color: #FF00FF; ">REPLACE</span><span style="color: #000000; "> TYPE BODY person_type2 </span><span style="color: #0000FF; ">IS</span><span style="color: #000000; "><br />       </span><span style="color: #008080; ">--</span><span style="color: #008080; ">构造方?/span><span style="color: #008080; "><br /></span><span style="color: #000000; ">       CONSTRUCTOR </span><span style="color: #0000FF; ">FUNCTION</span><span style="color: #000000; "> person_type2<br />       (<br />            ID </span><span style="color: #000000; font-weight: bold; ">NUMBER</span><span style="color: #000000; ">,<br />            NAME </span><span style="color: #000000; font-weight: bold; ">VARCHAR2</span><span style="color: #000000; "><br />       ) </span><span style="color: #0000FF; ">RETURN</span><span style="color: #000000; "> SELF </span><span style="color: #0000FF; ">AS</span><span style="color: #000000; "> RESULT<br />       </span><span style="color: #0000FF; ">IS</span><span style="color: #000000; "><br />       </span><span style="color: #0000FF; ">BEGIN</span><span style="color: #000000; "><br />         self.id:</span><span style="color: #808080; ">=</span><span style="color: #000000; ">ID;<br />         self.name:</span><span style="color: #808080; ">=</span><span style="color: #000000; ">NAME;<br />         </span><span style="color: #0000FF; ">RETURN</span><span style="color: #000000; ">;<br />       </span><span style="color: #0000FF; ">END</span><span style="color: #000000; ">;<br />       <br />       </span><span style="color: #008080; ">--</span><span style="color: #008080; "> 更改address的?/span><span style="color: #008080; "><br /></span><span style="color: #000000; ">       MEMBER </span><span style="color: #0000FF; ">PROCEDURE</span><span style="color: #000000; "> change_address(addr </span><span style="color: #000000; font-weight: bold; ">VARCHAR2</span><span style="color: #000000; ">)<br />       </span><span style="color: #0000FF; ">IS</span><span style="color: #000000; "><br />       </span><span style="color: #0000FF; ">BEGIN</span><span style="color: #000000; "><br />              address :</span><span style="color: #808080; ">=</span><span style="color: #000000; "> addr;<br />       </span><span style="color: #0000FF; ">END</span><span style="color: #000000; ">;<br />       <br />       </span><span style="color: #008080; ">--</span><span style="color: #008080; "> q回信息</span><span style="color: #008080; "><br /></span><span style="color: #000000; ">       MEMBER </span><span style="color: #0000FF; ">FUNCTION</span><span style="color: #000000; "> get_info </span><span style="color: #0000FF; ">RETURN</span><span style="color: #000000; "> </span><span style="color: #000000; font-weight: bold; ">VARCHAR2</span><span style="color: #000000; "><br />       </span><span style="color: #0000FF; ">IS</span><span style="color: #000000; "><br />       </span><span style="color: #0000FF; ">BEGIN</span><span style="color: #000000; "><br />         </span><span style="color: #0000FF; ">RETURN</span><span style="color: #000000; "> </span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">id:</span><span style="color: #FF0000; ">'</span><span style="color: #808080; ">||</span><span style="color: #000000; ">ID</span><span style="color: #808080; ">||</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">,name:</span><span style="color: #FF0000; ">'</span><span style="color: #808080; ">||</span><span style="color: #000000; ">NAME</span><span style="color: #808080; ">||</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">,phone:</span><span style="color: #FF0000; ">'</span><span style="color: #808080; ">||</span><span style="color: #000000; ">phone</span><span style="color: #808080; ">||</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">,address:</span><span style="color: #FF0000; ">'</span><span style="color: #808080; ">||</span><span style="color: #000000; ">address;<br />       </span><span style="color: #0000FF; ">END</span><span style="color: #000000; ">;<br /></span><span style="color: #0000FF; ">END</span><span style="color: #000000; ">;<br /><br /></span><span style="color: #0000FF; ">DROP</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">TABLE</span><span style="color: #000000; "> worker;<br /><br /></span><span style="color: #008080; ">--</span><span style="color: #008080; "> 创徏包含对象cd的表</span><span style="color: #008080; "><br /></span><span style="color: #0000FF; ">CREATE</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">TABLE</span><span style="color: #000000; "> worker(<br />       ID </span><span style="color: #000000; font-weight: bold; ">NUMBER</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">PRIMARY</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">KEY</span><span style="color: #000000; ">,<br />       person person_type2,<br />       create_time DATE </span><span style="color: #0000FF; ">DEFAULT</span><span style="color: #000000; "> SYSDATE,<br />       remark </span><span style="color: #000000; font-weight: bold; ">VARCHAR2</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">256</span><span style="color: #000000; ">)<br />)<br /><br /></span><span style="color: #008080; ">--</span><span style="color: #008080; ">查询包含对象的表</span><span style="color: #008080; "><br /></span><span style="color: #0000FF; ">SELECT</span><span style="color: #000000; "> </span><span style="color: #808080; ">*</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">FROM</span><span style="color: #000000; "> worker;<br /><br /></span><span style="color: #008080; ">--</span><span style="color: #008080; ">试对象</span><span style="color: #008080; "><br /></span><span style="color: #0000FF; ">DECLARE</span><span style="color: #000000; "><br />  pt2 person_type2;<br /></span><span style="color: #0000FF; ">BEGIN</span><span style="color: #000000; "><br />  pt2 :</span><span style="color: #808080; ">=</span><span style="color: #000000; "> person_type2(</span><span style="color: #800000; font-weight: bold; ">1</span><span style="color: #000000; ">,</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">huiwanpeng</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br />  dbms_output.put_line(pt2.get_info());<br />  pt2.change_address(</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">成都</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br />  dbms_output.put_line(pt2.get_info());<br /></span><span style="color: #0000FF; ">END</span><span style="color: #000000; ">;</span></div><img src ="http://www.aygfsteel.com/hwpok/aggbug/354321.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/hwpok/" target="_blank">惠万?/a> 2011-07-14 14:17 <a href="http://www.aygfsteel.com/hwpok/archive/2011/07/14/354321.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 对象cd(一) 单对?/title><link>http://www.aygfsteel.com/hwpok/archive/2011/07/14/354320.html</link><dc:creator>惠万?/dc:creator><author>惠万?/author><pubDate>Thu, 14 Jul 2011 05:15:00 GMT</pubDate><guid>http://www.aygfsteel.com/hwpok/archive/2011/07/14/354320.html</guid><wfw:comment>http://www.aygfsteel.com/hwpok/comments/354320.html</wfw:comment><comments>http://www.aygfsteel.com/hwpok/archive/2011/07/14/354320.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/hwpok/comments/commentRss/354320.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/hwpok/services/trackbacks/354320.html</trackback:ping><description><![CDATA[对象cd是用戯定义的复合数据类?<br />它个包有点类?它也包含两个部䆾:<br />对象cd规范和对象类型体.<br />对象cd包含五种Ҏ:<br />1.构造方?使用constructor function<br />2.成员Ҏ,使用menber<br />3.靜态方?使用static<br />4.排序Ҏ,使用map,一个对象类型只能定义一?<br />5.排充Ҏ2.使用order,一个对象类型只能定义一?<br /><br />下面我们看一下简单对象类?<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">--</span><span style="color: #008080; "> 建立对象cd</span><span style="color: #008080; "><br /></span><span style="color: #0000FF; ">CREATE</span><span style="color: #000000; "> </span><span style="color: #808080; ">OR</span><span style="color: #000000; "> </span><span style="color: #FF00FF; ">REPLACE</span><span style="color: #000000; "> TYPE person_type </span><span style="color: #0000FF; ">AS</span><span style="color: #000000; "> OBJECT(<br />       ID </span><span style="color: #000000; font-weight: bold; ">NUMBER</span><span style="color: #000000; ">,<br />       NAME </span><span style="color: #000000; font-weight: bold; ">VARCHAR2</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">32</span><span style="color: #000000; ">),<br />       gender </span><span style="color: #000000; font-weight: bold; ">NUMBER</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">1</span><span style="color: #000000; ">),<br />       birthday DATE<br />);<br /><br /></span><span style="color: #008080; ">--</span><span style="color: #008080; "> 建立行对?/span><span style="color: #008080; "><br /></span><span style="color: #0000FF; ">CREATE</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">TABLE</span><span style="color: #000000; "> t_person </span><span style="color: #0000FF; ">OF</span><span style="color: #000000; "> person_type;<br /><br /></span><span style="color: #008080; ">--</span><span style="color: #008080; "> 查询?/span><span style="color: #008080; "><br /></span><span style="color: #0000FF; ">SELECT</span><span style="color: #000000; "> </span><span style="color: #808080; ">*</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">FROM</span><span style="color: #000000; "> t_person;<br /><br /></span><span style="color: #008080; ">--</span><span style="color: #008080; "> 对行插入数据</span><span style="color: #008080; "><br /></span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; "> t_person </span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; ">(person_type(</span><span style="color: #800000; font-weight: bold; ">1</span><span style="color: #000000; ">,</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">huiwanpeng</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">,</span><span style="color: #800000; font-weight: bold; ">0</span><span style="color: #000000; ">,SYSDATE));</span></div><img src ="http://www.aygfsteel.com/hwpok/aggbug/354320.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/hwpok/" target="_blank">惠万?/a> 2011-07-14 13:15 <a href="http://www.aygfsteel.com/hwpok/archive/2011/07/14/354320.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle ?/title><link>http://www.aygfsteel.com/hwpok/archive/2011/07/14/354317.html</link><dc:creator>惠万?/dc:creator><author>惠万?/author><pubDate>Thu, 14 Jul 2011 04:32:00 GMT</pubDate><guid>http://www.aygfsteel.com/hwpok/archive/2011/07/14/354317.html</guid><wfw:comment>http://www.aygfsteel.com/hwpok/comments/354317.html</wfw:comment><comments>http://www.aygfsteel.com/hwpok/archive/2011/07/14/354317.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/hwpok/comments/commentRss/354317.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/hwpok/services/trackbacks/354317.html</trackback:ping><description><![CDATA[oracle 是用于逻辑l合多个q程或函?<br />一个oracle包包含两部䆾:<br />1.包规?br />   相当于java里的接口.<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">--</span><span style="color: #008080; "> 包规?/span><span style="color: #008080; "><br /></span><span style="color: #0000FF; ">CREATE</span><span style="color: #000000; "> </span><span style="color: #808080; ">OR</span><span style="color: #000000; "> </span><span style="color: #FF00FF; ">REPLACE</span><span style="color: #000000; "> PACKAGE pkg_edm<br /></span><span style="color: #0000FF; ">IS</span><span style="color: #000000; "><br />   age </span><span style="color: #000000; font-weight: bold; ">NUMBER</span><span style="color: #000000; "> :</span><span style="color: #808080; ">=</span><span style="color: #000000; "> </span><span style="color: #800000; font-weight: bold; ">30</span><span style="color: #000000; ">;<br />   </span><span style="color: #0000FF; ">PROCEDURE</span><span style="color: #000000; ">  add_test_hui(<br />       in_id </span><span style="color: #808080; ">IN</span><span style="color: #000000; "> </span><span style="color: #000000; font-weight: bold; ">NUMBER</span><span style="color: #000000; ">, <br />       in_value </span><span style="color: #808080; ">IN</span><span style="color: #000000; "> </span><span style="color: #000000; font-weight: bold; ">VARCHAR2</span><span style="color: #000000; ">);<br />   </span><span style="color: #0000FF; ">FUNCTION</span><span style="color: #000000; "> getValueById(<br />       in_id </span><span style="color: #808080; ">IN</span><span style="color: #000000; "> </span><span style="color: #000000; font-weight: bold; ">NUMBER</span><span style="color: #000000; ">) </span><span style="color: #0000FF; ">RETURN</span><span style="color: #000000; "> </span><span style="color: #000000; font-weight: bold; ">VARCHAR2</span><span style="color: #000000; ">;<br /></span><span style="color: #0000FF; ">END</span><span style="color: #000000;"> pkg_edm;</span></div>2.包体<br />   相当于java里的接口实现c?<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">--</span><span style="color: #008080; "> 包体</span><span style="color: #008080; "><br /></span><span style="color: #0000FF; ">CREATE</span><span style="color: #000000; "> </span><span style="color: #808080; ">OR</span><span style="color: #000000; "> </span><span style="color: #FF00FF; ">REPLACE</span><span style="color: #000000; "> PACKAGE BODY pkg_edm<br /></span><span style="color: #0000FF; ">IS</span><span style="color: #000000; "><br />    </span><span style="color: #008080; ">--</span><span style="color: #008080; "> 查询函数</span><span style="color: #008080; "><br /></span><span style="color: #000000; ">    </span><span style="color: #0000FF; ">FUNCTION</span><span style="color: #000000; "> getValueById(<br />       in_id </span><span style="color: #808080; ">IN</span><span style="color: #000000; "> </span><span style="color: #000000; font-weight: bold; ">NUMBER</span><span style="color: #000000; ">) </span><span style="color: #0000FF; ">RETURN</span><span style="color: #000000; "> </span><span style="color: #000000; font-weight: bold; ">VARCHAR2</span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; ">IS</span><span style="color: #000000; "><br />        rtn_value </span><span style="color: #000000; font-weight: bold; ">VARCHAR2</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">64</span><span style="color: #000000; ">) :</span><span style="color: #808080; ">=</span><span style="color: #000000; "> </span><span style="color: #FF0000; ">''</span><span style="color: #000000; ">;<br />    </span><span style="color: #0000FF; ">BEGIN</span><span style="color: #000000; "><br />      </span><span style="color: #0000FF; ">SELECT</span><span style="color: #000000; "> VALUE </span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; "> rtn_value </span><span style="color: #0000FF; ">FROM</span><span style="color: #000000; "> test_hui </span><span style="color: #0000FF; ">WHERE</span><span style="color: #000000; "> ID</span><span style="color: #808080; ">=</span><span style="color: #000000; ">in_id;<br />      </span><span style="color: #0000FF; ">RETURN</span><span style="color: #000000; "> rtn_value;<br />    EXCEPTION<br />      </span><span style="color: #0000FF; ">WHEN</span><span style="color: #000000; "> OTHERS </span><span style="color: #0000FF; ">THEN</span><span style="color: #000000; "><br />        </span><span style="color: #0000FF; ">RETURN</span><span style="color: #000000; "> rtn_value;<br />    </span><span style="color: #0000FF; ">END</span><span style="color: #000000; "> getValueById;<br />    <br />    </span><span style="color: #008080; ">--</span><span style="color: #008080; "> 插入记录q程</span><span style="color: #008080; "><br /></span><span style="color: #000000; ">    </span><span style="color: #0000FF; ">PROCEDURE</span><span style="color: #000000; ">  add_test_hui(<br />       in_id </span><span style="color: #808080; ">IN</span><span style="color: #000000; "> </span><span style="color: #000000; font-weight: bold; ">NUMBER</span><span style="color: #000000; ">, <br />       in_value </span><span style="color: #808080; ">IN</span><span style="color: #000000; "> </span><span style="color: #000000; font-weight: bold; ">VARCHAR2</span><span style="color: #000000; ">)<br />    </span><span style="color: #0000FF; ">IS</span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; ">BEGIN</span><span style="color: #000000; "><br />       </span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; "> test_hui (ID,VALUE) </span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; ">(in_id,in_value);<br />       </span><span style="color: #0000FF; ">COMMIT</span><span style="color: #000000; ">;<br />    </span><span style="color: #0000FF; ">END</span><span style="color: #000000; "> add_test_hui;<br /></span><span style="color: #0000FF; ">END</span><span style="color: #000000; "> pkg_edm;</span></div><br />包的调用:<br />1.试调用包过E?br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">--</span><span style="color: #008080; ">试调用包过E?/span><span style="color: #008080; "><br /></span><span style="color: #0000FF; ">BEGIN</span><span style="color: #000000; "><br />  pkg_edm.add_test_hui(</span><span style="color: #800000; font-weight: bold; ">99999</span><span style="color: #000000; ">,</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">asdfasdf</span><span style="color: #FF0000; ">'</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">END</span><span style="color: #000000; ">;</span></div><br />2.试调用包函?br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">--</span><span style="color: #008080; ">试调用包函?/span><span style="color: #008080; "><br /></span><span style="color: #0000FF; ">DECLARE</span><span style="color: #000000; "><br />   temp_value </span><span style="color: #000000; font-weight: bold; ">VARCHAR2</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">64</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">BEGIN</span><span style="color: #000000; "><br />  temp_value :</span><span style="color: #808080; ">=</span><span style="color: #000000; "> pkg_edm.getValueById(</span><span style="color: #800000; font-weight: bold; ">8713</span><span style="color: #000000; ">);<br />  dbms_output.put_line(temp_value);<br /></span><span style="color: #0000FF; ">END</span><span style="color: #000000; ">;</span></div><br /><img src ="http://www.aygfsteel.com/hwpok/aggbug/354317.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/hwpok/" target="_blank">惠万?/a> 2011-07-14 12:32 <a href="http://www.aygfsteel.com/hwpok/archive/2011/07/14/354317.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 参照游标http://www.aygfsteel.com/hwpok/archive/2011/07/13/354245.html惠万?/dc:creator>惠万?/author>Wed, 13 Jul 2011 04:32:00 GMThttp://www.aygfsteel.com/hwpok/archive/2011/07/13/354245.htmlhttp://www.aygfsteel.com/hwpok/comments/354245.htmlhttp://www.aygfsteel.com/hwpok/archive/2011/07/13/354245.html#Feedback0http://www.aygfsteel.com/hwpok/comments/commentRss/354245.htmlhttp://www.aygfsteel.com/hwpok/services/trackbacks/354245.htmloracle中的参照变量有两U,ref cursor和ref obj_type。是指用于存放数值指针的变量。通过使用参照变量Q可以得应用程序共享相同对象,从而降低占用空间?/div>
    Ref cursorQ?/strong>使用游标变量时不需要在定义时就指定相应的select语句Q从而实现动态的游标操作?/div>
    DECLARE
        TYPE cur 
    IS REF CURSOR;
        test_cur cur;
        t_record test_forall
    %ROWTYPE;
    BEGIN
        
    OPEN test_cur FOR SELECT * FROM test_forall;
        LOOP
          
    FETCH test_cur INTO t_record;
          
    EXIT WHEN test_cur%NOTFOUND;
          dbms_output.put_line(t_record.
    user_id);
        
    END LOOP;
        
    CLOSE test_cur;
    END;


    ]]>oracle 10g 集合的高U特?/title><link>http://www.aygfsteel.com/hwpok/archive/2011/07/13/354242.html</link><dc:creator>惠万?/dc:creator><author>惠万?/author><pubDate>Wed, 13 Jul 2011 03:43:00 GMT</pubDate><guid>http://www.aygfsteel.com/hwpok/archive/2011/07/13/354242.html</guid><wfw:comment>http://www.aygfsteel.com/hwpok/comments/354242.html</wfw:comment><comments>http://www.aygfsteel.com/hwpok/archive/2011/07/13/354242.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/hwpok/comments/commentRss/354242.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/hwpok/services/trackbacks/354242.html</trackback:ping><description><![CDATA[1.使用集合赋?br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">DECLARE</span><span style="color: #000000; "><br />    TYPE t_user_id </span><span style="color: #0000FF; ">IS</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">TABLE</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">OF</span><span style="color: #000000; "> test_forall.</span><span style="color: #FF00FF; ">user_id</span><span style="color: #808080; ">%</span><span style="color: #000000; ">TYPE;<br />    t1 t_user_id;<br /></span><span style="color: #0000FF; ">BEGIN</span><span style="color: #000000; "><br />    t1 :</span><span style="color: #808080; ">=</span><span style="color: #000000; "> t_user_id(</span><span style="color: #800000; font-weight: bold; ">1</span><span style="color: #000000; ">,</span><span style="color: #800000; font-weight: bold; ">2</span><span style="color: #000000; ">,</span><span style="color: #800000; font-weight: bold; ">3</span><span style="color: #000000; ">);<br />    </span><span style="color: #0000FF; ">FOR</span><span style="color: #000000; "> i </span><span style="color: #808080; ">IN</span><span style="color: #000000; "> </span><span style="color: #800000; font-weight: bold; ">1</span><span style="color: #000000; ">..t1.</span><span style="color: #FF00FF; ">count</span><span style="color: #000000; "><br />      LOOP<br />        dbms_output.put_line(t1(i));<br />      </span><span style="color: #0000FF; ">END</span><span style="color: #000000; "> LOOP;<br /></span><span style="color: #0000FF; ">END</span><span style="color: #000000; ">;</span></div><br />2.set 集合去重<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">DECLARE</span><span style="color: #000000; "><br />    TYPE t_user_id </span><span style="color: #0000FF; ">IS</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">TABLE</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">OF</span><span style="color: #000000; "> test_forall.</span><span style="color: #FF00FF; ">user_id</span><span style="color: #808080; ">%</span><span style="color: #000000; ">TYPE;<br />    t1 t_user_id;<br />    t2 t_user_id;<br /></span><span style="color: #0000FF; ">BEGIN</span><span style="color: #000000; "><br />    t1 :</span><span style="color: #808080; ">=</span><span style="color: #000000; "> t_user_id(</span><span style="color: #800000; font-weight: bold; ">1</span><span style="color: #000000; ">,</span><span style="color: #800000; font-weight: bold; ">1</span><span style="color: #000000; ">,</span><span style="color: #800000; font-weight: bold; ">2</span><span style="color: #000000; ">,</span><span style="color: #800000; font-weight: bold; ">2</span><span style="color: #000000; ">,</span><span style="color: #800000; font-weight: bold; ">3</span><span style="color: #000000; ">,</span><span style="color: #800000; font-weight: bold; ">3</span><span style="color: #000000; ">);<br />    t2 :</span><span style="color: #808080; ">=</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">SET</span><span style="color: #000000; ">(t1);<br />    </span><span style="color: #0000FF; ">FOR</span><span style="color: #000000; "> i </span><span style="color: #808080; ">IN</span><span style="color: #000000; "> </span><span style="color: #800000; font-weight: bold; ">1</span><span style="color: #000000; ">..t2.</span><span style="color: #FF00FF; ">count</span><span style="color: #000000; "><br />      LOOP<br />        dbms_output.put_line(</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">t2:</span><span style="color: #FF0000; ">'</span><span style="color: #808080; ">||</span><span style="color: #000000; ">t2(i));<br />      </span><span style="color: #0000FF; ">END</span><span style="color: #000000; "> LOOP;<br /></span><span style="color: #0000FF; ">END</span><span style="color: #000000; ">;</span></div><br />3.multiset union 合ƈ包含重复?/multiset union distinct 合ƈ去重复?br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">DECLARE</span><span style="color: #000000; "><br />    TYPE t_user_id </span><span style="color: #0000FF; ">IS</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">TABLE</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">OF</span><span style="color: #000000; "> test_forall.</span><span style="color: #FF00FF; ">user_id</span><span style="color: #808080; ">%</span><span style="color: #000000; ">TYPE;<br />    t1 t_user_id :</span><span style="color: #808080; ">=</span><span style="color: #000000; "> t_user_id(</span><span style="color: #800000; font-weight: bold; ">1</span><span style="color: #000000; ">,</span><span style="color: #800000; font-weight: bold; ">2</span><span style="color: #000000; ">,</span><span style="color: #800000; font-weight: bold; ">3</span><span style="color: #000000; ">);<br />    t2 t_user_id :</span><span style="color: #808080; ">=</span><span style="color: #000000; "> t_user_id(</span><span style="color: #800000; font-weight: bold; ">1</span><span style="color: #000000; ">,</span><span style="color: #800000; font-weight: bold; ">2</span><span style="color: #000000; ">,</span><span style="color: #800000; font-weight: bold; ">3</span><span style="color: #000000; ">,</span><span style="color: #800000; font-weight: bold; ">4</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">BEGIN</span><span style="color: #000000; "><br />    t2 :</span><span style="color: #808080; ">=</span><span style="color: #000000; "> t2 MULTISET </span><span style="color: #0000FF; ">UNION</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">DISTINCT</span><span style="color: #000000; "> t1;<br />    </span><span style="color: #0000FF; ">FOR</span><span style="color: #000000; "> i </span><span style="color: #808080; ">IN</span><span style="color: #000000; "> </span><span style="color: #800000; font-weight: bold; ">1</span><span style="color: #000000; ">..t2.</span><span style="color: #FF00FF; ">count</span><span style="color: #000000; "><br />      LOOP<br />        dbms_output.put_line(</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">t2:</span><span style="color: #FF0000; ">'</span><span style="color: #808080; ">||</span><span style="color: #000000; ">t2(i));<br />      </span><span style="color: #0000FF; ">END</span><span style="color: #000000; "> LOOP;<br /></span><span style="color: #0000FF; ">END</span><span style="color: #000000; ">;</span></div><br />4.集合求差<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">DECLARE</span><span style="color: #000000; "><br />    TYPE t_user_id </span><span style="color: #0000FF; ">IS</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">TABLE</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">OF</span><span style="color: #000000; "> test_forall.</span><span style="color: #FF00FF; ">user_id</span><span style="color: #808080; ">%</span><span style="color: #000000; ">TYPE;<br />    t1 t_user_id :</span><span style="color: #808080; ">=</span><span style="color: #000000; "> t_user_id(</span><span style="color: #800000; font-weight: bold; ">1</span><span style="color: #000000; ">,</span><span style="color: #800000; font-weight: bold; ">2</span><span style="color: #000000; ">,</span><span style="color: #800000; font-weight: bold; ">3</span><span style="color: #000000; ">);<br />    t2 t_user_id :</span><span style="color: #808080; ">=</span><span style="color: #000000; "> t_user_id(</span><span style="color: #800000; font-weight: bold; ">1</span><span style="color: #000000; ">,</span><span style="color: #800000; font-weight: bold; ">2</span><span style="color: #000000; ">,</span><span style="color: #800000; font-weight: bold; ">3</span><span style="color: #000000; ">,</span><span style="color: #800000; font-weight: bold; ">4</span><span style="color: #000000; ">);<br /></span><span style="color: #0000FF; ">BEGIN</span><span style="color: #000000; "><br />    t2 :</span><span style="color: #808080; ">=</span><span style="color: #000000; "> t2 MULTISET </span><span style="color: #0000FF; ">EXCEPT</span><span style="color: #000000; "> t1;<br />    </span><span style="color: #0000FF; ">FOR</span><span style="color: #000000; "> i </span><span style="color: #808080; ">IN</span><span style="color: #000000; "> </span><span style="color: #800000; font-weight: bold; ">1</span><span style="color: #000000; ">..t2.</span><span style="color: #FF00FF; ">count</span><span style="color: #000000; "><br />      LOOP<br />        dbms_output.put_line(</span><span style="color: #FF0000; ">'</span><span style="color: #FF0000; ">t2:</span><span style="color: #FF0000; ">'</span><span style="color: #808080; ">||</span><span style="color: #000000; ">t2(i));<br />      </span><span style="color: #0000FF; ">END</span><span style="color: #000000; "> LOOP;<br /></span><span style="color: #0000FF; ">END</span><span style="color: #000000;">;</span></div><br />5.集合是否ؓI?if arr is null then 初始?end if;<br /><br /><img src ="http://www.aygfsteel.com/hwpok/aggbug/354242.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/hwpok/" target="_blank">惠万?/a> 2011-07-13 11:43 <a href="http://www.aygfsteel.com/hwpok/archive/2011/07/13/354242.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FORALL与BULK COLLECT的用方?/title><link>http://www.aygfsteel.com/hwpok/archive/2011/07/13/354241.html</link><dc:creator>惠万?/dc:creator><author>惠万?/author><pubDate>Wed, 13 Jul 2011 03:19:00 GMT</pubDate><guid>http://www.aygfsteel.com/hwpok/archive/2011/07/13/354241.html</guid><wfw:comment>http://www.aygfsteel.com/hwpok/comments/354241.html</wfw:comment><comments>http://www.aygfsteel.com/hwpok/archive/2011/07/13/354241.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/hwpok/comments/commentRss/354241.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/hwpok/services/trackbacks/354241.html</trackback:ping><description><![CDATA[<div>FORALL与BULK COLLECT的用方? <br />1Q用FORALL比FOR效率高,因ؓ前者只切换一ơ上下文Q而后者将是在循环ơ数一样多个上下文间切换? <br />2Q用BLUK COLLECT一ơ取Z个数据集合,比用游标条取数据效率高,其是在|络不大好的情况下。但BLUK COLLECT需要大量内存?br /><br />1).在select into 中?forall bulk collect;<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">create</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">table</span><span style="color: #000000; "> test_forall ( </span><span style="color: #FF00FF; ">user_id</span><span style="color: #000000; "> </span><span style="color: #000000; font-weight: bold; ">number</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">10</span><span style="color: #000000; ">), </span><span style="color: #FF00FF; ">user_name</span><span style="color: #000000; "> </span><span style="color: #000000; font-weight: bold; ">varchar2</span><span style="color: #000000; ">(</span><span style="color: #800000; font-weight: bold; ">20</span><span style="color: #000000; ">)); <br /></span><span style="color: #0000FF; ">SELECT</span><span style="color: #000000; "> </span><span style="color: #808080; ">*</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">FROM</span><span style="color: #000000; "> ex_edm_esp; <br /></span><span style="color: #0000FF; ">SELECT</span><span style="color: #000000; "> </span><span style="color: #808080; ">*</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">FROM</span><span style="color: #000000; "> test_forall;<br /></span><span style="color: #0000FF; ">DECLARE</span><span style="color: #000000; "><br />    TYPE forall_table </span><span style="color: #0000FF; ">IS</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">TABLE</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">OF</span><span style="color: #000000; "> test_forall</span><span style="color: #808080; ">%</span><span style="color: #000000; ">ROWTYPE;<br />    test_table forall_table;<br /></span><span style="color: #0000FF; ">BEGIN</span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; ">SELECT</span><span style="color: #000000; "> ID,esp_name </span><span style="color: #0000FF; ">BULK</span><span style="color: #000000; "> COLLECT </span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; "> test_table </span><span style="color: #0000FF; ">FROM</span><span style="color: #000000; "> ex_edm_esp;<br />    FORALL idx </span><span style="color: #808080; ">IN</span><span style="color: #000000; "> test_table.first..test_table.last<br />           </span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; "> test_forall </span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; "> test_table(idx);<br />    </span><span style="color: #0000FF; ">COMMIT</span><span style="color: #000000; ">;<br />EXCEPTION<br />  </span><span style="color: #0000FF; ">WHEN</span><span style="color: #000000; "> OTHERS </span><span style="color: #0000FF; ">THEN</span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; ">ROLLBACK</span><span style="color: #000000; ">;<br /></span><span style="color: #0000FF; ">END</span><span style="color: #000000; ">;</span></div><br />for all 的另一U写?<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">FORALL idx </span><span style="color: #808080; ">IN</span><span style="color: #000000; "> VALUE </span><span style="color: #0000FF; ">OF</span><span style="color: #000000; "> test </span><span style="color: #0000FF; ">table</span><span style="color: #000000; "><img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span></div><br />2).在fetch into中?forall, indices of, bulk collect;</div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">DECLARE</span><span style="color: #000000; "><br />    TYPE forall_table </span><span style="color: #0000FF; ">IS</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">TABLE</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">OF</span><span style="color: #000000; "> test_forall</span><span style="color: #808080; ">%</span><span style="color: #000000; ">ROWTYPE;<br />    test_table forall_table;<br />    </span><span style="color: #0000FF; ">CURSOR</span><span style="color: #000000; "> test_cur </span><span style="color: #0000FF; ">IS</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">SELECT</span><span style="color: #000000; "> ID,esp_name </span><span style="color: #0000FF; ">FROM</span><span style="color: #000000; "> ex_edm_esp;<br /></span><span style="color: #0000FF; ">BEGIN</span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; ">OPEN</span><span style="color: #000000; "> test_cur;<br />    </span><span style="color: #0000FF; ">FETCH</span><span style="color: #000000; "> test_cur </span><span style="color: #0000FF; ">BULK</span><span style="color: #000000; "> COLLECT </span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; "> test_table;<br />    </span><span style="color: #0000FF; ">CLOSE</span><span style="color: #000000; "> test_cur;<br />    <br />    </span><span style="color: #008080; ">--</span><span style="color: #008080; "> 跌集合中的null元素</span><span style="color: #008080; "><br /></span><span style="color: #000000; ">    FORALL idx </span><span style="color: #808080; ">IN</span><span style="color: #000000; "> INDICES </span><span style="color: #0000FF; ">OF</span><span style="color: #000000; "> test_table<br />           </span><span style="color: #0000FF; ">INSERT</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; "> test_forall </span><span style="color: #0000FF; ">VALUES</span><span style="color: #000000; "> test_table(idx);<br />    </span><span style="color: #0000FF; ">COMMIT</span><span style="color: #000000; ">;<br />EXCEPTION<br />  </span><span style="color: #0000FF; ">WHEN</span><span style="color: #000000; "> OTHERS </span><span style="color: #0000FF; ">THEN</span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; ">ROLLBACK</span><span style="color: #000000; ">;<br /></span><span style="color: #0000FF; ">END</span><span style="color: #000000; ">;</span></div><br />3).在returning into 之中使用 forall in, value of, bulk collect;<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">DECLARE</span><span style="color: #000000; "><br />    TYPE t_user_id </span><span style="color: #0000FF; ">IS</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">TABLE</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">OF</span><span style="color: #000000; "> test_forall.</span><span style="color: #FF00FF; ">user_id</span><span style="color: #808080; ">%</span><span style="color: #000000; ">TYPE;<br />    t1 t_user_id;<br />    TYPE t_user_name </span><span style="color: #0000FF; ">IS</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">TABLE</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">OF</span><span style="color: #000000; "> test_forall.</span><span style="color: #FF00FF; ">user_name</span><span style="color: #808080; ">%</span><span style="color: #000000; ">TYPE;<br />    t2 t_user_name;<br /></span><span style="color: #0000FF; ">BEGIN</span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; ">DELETE</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">FROM</span><span style="color: #000000; "> test_forall RETURNING </span><span style="color: #FF00FF; ">user_id</span><span style="color: #000000; ">, </span><span style="color: #FF00FF; ">user_name</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">BULK</span><span style="color: #000000; "> COLLECT </span><span style="color: #0000FF; ">INTO</span><span style="color: #000000; "> t1,t2;<br />    </span><span style="color: #0000FF; ">FOR</span><span style="color: #000000; "> i </span><span style="color: #808080; ">IN</span><span style="color: #000000; "> t1.first..t1.last<br />      LOOP<br />        dbms_output.put_line(t1(i));<br />        dbms_output.put_line(t2(i));<br />      </span><span style="color: #0000FF; ">END</span><span style="color: #000000; "> LOOP;<br />    </span><span style="color: #0000FF; ">ROLLBACK</span><span style="color: #000000; ">;<br />EXCEPTION<br />  </span><span style="color: #0000FF; ">WHEN</span><span style="color: #000000; "> OTHERS </span><span style="color: #0000FF; ">THEN</span><span style="color: #000000; "><br />    </span><span style="color: #0000FF; ">ROLLBACK</span><span style="color: #000000; ">;<br /></span><span style="color: #0000FF; ">END</span><span style="color: #000000; ">;</span></div><br /><br /><br /><img src ="http://www.aygfsteel.com/hwpok/aggbug/354241.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/hwpok/" target="_blank">惠万?/a> 2011-07-13 11:19 <a href="http://www.aygfsteel.com/hwpok/archive/2011/07/13/354241.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">ҳ</a>| <a href="http://" target="_blank">۽</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ٲ</a>| <a href="http://" target="_blank">ӱʡ</a>| <a href="http://" target="_blank">˳</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ǡ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">մ</a>| <a href="http://" target="_blank">ͼľ</a>| <a href="http://" target="_blank">ؼ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʯȪ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˫</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank">˫</a>| <a href="http://" target="_blank">ݶ</a>| <a href="http://" target="_blank">ͼʲ</a>| <a href="http://" target="_blank">Ĵʡ</a>| <a href="http://" target="_blank">Ɽ</a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>