1create table SYS.CMS_CASE_FEE(CASE_ID NUMBER(15,0) NOT NULL,SOURCE_KIND nvarchar2(1) NOT NULL,SEQ_NO NUMBER(15,0) NOT NULL ,FEE_KIND1 nvarchar2(5) NULL,FEE_AMT1 NUMBER(15,1) NULL,FEE_KIND2 nvarchar2(5) NULL,FEE_AMT2 NUMBER(15,1) NULL,FEE_KIND3 nvarchar2(5) NULL,FEE_AMT3 NUMBER(15,1) NULL,PRIMARY KEY(CASE_ID,SEQ_NO,SOURCE_KIND) )2栏位自增:1 创建表(create table)create table test(autoid number(10,0)......CONSTRAINT test PRIMARY KEY(autoid))2 建立序列(create sequence)create sequence seq_test_autoid increment by 1 start with 1 3 插入数据(insert data)insert into test values(seq_test_autoid.nextval,......)3Oracle 中的表名和列名可以包括字母,数字和下划线,名字长度为1-30个字符.4Oracle 中定义变量及变量使用:declarevar1 number;var2 nvarchar2(10):='test';--初始化var3 nvarchar2(10);begin--处理语句select 'hello' into var3 from dual;var3:='test';insert into tablename(......) values(var1,var2,var3); end;中传多个SQL语句到Oracle中执行:begin--执行语句insert into tablename(......) values(var1,var2,var3); insert into tablename(......) values(var1,var2,var3); end;6在执行insert语句时,如果db中的栏位类型为data类型,不能像sql server中那样insert字符类型的数据,要将此转化为date类型,才可进行新增操作如:sql server:insert into table1(clomn1,clomn2)values(12,'2006/01/02')orcal:insert intotable1(clomn1,clomn2)values(12,to_date('2006/01/02','yyyy/mm/dd'))0.07Oracle 中文占3个字节问题:1 存在表中的欄位類型為Nvarchar2的中文还是占2个字节.select lengthb(strword) from word_test --结果:8( 表word_test存有一条记录,strword2栏位值位:"汉汉汉汉",lengthb()为取字节长度函数).2 存在表中的欄位類型為varchar2(varchar)的中文还是占3个字节.select lengthb(strword) from word_test --结果:12( 表word_test存有一条记录,strword2栏位值位:"汉汉汉汉",lengthb()为取字节长度函数).3 字符串中中文占3个字节.select lengthb('汉汉汉汉') from word_test --结果:124 按字符长度处理栏位(如:SUBSTR()等函数)处理栏位和中文字串时处理方式一样.select SUBSTR('汉汉汉汉',1,3) from dual --结果:汉汉汉select SUBSTR(strword,1,3) from word_test --结果:汉汉汉5 按字节长度处理栏位(如:SUBSTRB()按字节截取)处理栏位和中文字串时方式有差异:select SUBSTRB('汉汉汉汉',1,4) from dual --结果:汉select SUBSTRB(strword,1,4) from word_test --结果:汉汉(strword欄位類型位Nvarchar2)select SUBSTRB(strword,1,4) from word_test --结果:汉汉(strword 欄位類型位varchar2(varchar))8grant create any table to cms --解決建立臨時表的權限問題create or replace procedure cms.lucytest4 isbeginexecute immediate 'CREATE GLOBAL TEMPORARY TABLE lucyT4 ( pid nvarchar2(3),pname nvarchar2(10) ) ON COMMIT delete ROWS';execute immediate 'insert into lucyT4 values(''001'',''A1'')'; execute immediate 'SELECT * FROM lucyT4';--execute immediate 'DELETE * FROM lucyT4';execute immediate 'DROP TABLE lucyT4';end;gobegincms.lucytest4();end;9查询表中TREE_ID栏位最大的值,然后加1,产生最大的ID:select right('00000' + cast((select isnull(max(TREE_ID),0) + 1 from CMS_Problem_Data) as varchar),5) AS TREE_ID转换方式:SELECTSUBSTR('00000' || TO_CHAR(NVL(MAX(TREE_ID),0) + 1),LENGTH('00000' || TO_CHAR(NVL(MAX(TREE_ID),0) + 1))-4,LENGTH('00000' || TO_CHAR(NVL(MAX(TREE_ID),0) + 1))) AS TREE_IDFROMCMS_PROBLEM_DATA10栏位排序:SQL Server 以某栏位升序排序,则会将栏位值为"Null"的数据排在最前面. 而 Oracle 以某栏位升序排序,则会将栏位值为"Null"的数据排在最后面.SQL Server中的查询条件不区分全角,半角;Oracle中的查询条件区分全角,半角.如条件:WHERE USER_ID = '730097'或WHERE USER_ID = '730097'13Oracle中的保留字不可以用作 表名或表的栏位名称.(比如保留字:LEVEL)可以通过加双引号解决该问题("保留字"),但是加上 "" 后表名或表的栏位名称就会区分大小写.而且以后使用该表或表的栏位必须加上"",会给程式撰写带来麻烦.14左连接:select count(*) from CMS_COLLATERAL left join CMS_COLLATERAL_STATUS on CMS_COLLATERAL.COLL_ID = CMS_COLLATERAL_STATUS.COLL_ID或select count(*) from CMS_COLLATERAL ,CMS_COLLATERAL_STATUSwhere CMS_COLLATERAL.COLL_ID = CMS_COLLATERAL_STATUS.COLL_ID(+)位名 称用“[]”括起来2 SYS :为表所在的tablespace(可以不写)3 有默认值的栏位定义方式为: 栏位名称 栏位类型 DEFAULT (value)null/not null.Colton2007/2/7 Oracle 中可通过为建立表的序列实现栏位自增.Colton2007/2/8Colton2007/2/8注意:1 每个语句后面都有";".2 end 后面加 ";",declare/begin 不加Colton2007/2/15注意:1 目前,测出执行多个select语句不可以.2注意 ";" 使用.Colton2007/2/15Colton2007/2/15 Colton在儲存過程中建立臨時表的撰Lucy2007/3/5Gary2007/2/12Gary2007/2/14Gary2007/2/26ColtonColton Colton。