yxhxj2006

          常用鏈接

          統(tǒng)計(jì)

          最新評(píng)論

          全面對(duì)比T-SQL與PL/SQL

          以前一直用mssql 做開(kāi)發(fā),最近的項(xiàng)目都Oracle,

           

          1)數(shù)據(jù)類型

           

          TSQL

          PL/SQL

           

          numeric(p,s)

          numeric(p,s) or NUMBER(p,s)

           

          decimal(p,s)

          decimal(p,s) or NUMBER(p,s)

           

          char(m)

          Char(m)

           

          varchar(m)

          varchar2(m)

           

          datetime

          date

          記錄

           

          Record

          表字段

           

          %type

          表記錄

           

          %rowtype

           

          Table

          自動(dòng)增長(zhǎng)變量

          AUTOINCREMENT

           

           

          2)變量聲明、賦值與引用

           

          TSQL

          PL/SQL

          聲明

          declare

           @ls_casher char(1),

           @ln_payAmt decimal(14,4)

          declare

           on_hand INTEGER;

           ls_casher char(1);

          賦值

          select @ls_casher = 'A'

          ls_casher:=’A’;

          引用

          if @ ls_casher = 'A'

          if ls_casher = 'A' then

          SQL語(yǔ)句中賦值

          SELECT @ls_casher=sal FROM emp WHERE empno = emp_id;

          SELECT sal INTO ls_casher FROM emp WHERE empno = emp_id;

          SQL語(yǔ)句中引用

          SELECT * FROM emp WHERE sal = @ls_casher;

          SELECT * FROM emp WHERE sal = ls_casher;

           

          3)函數(shù)與操作符

          字符串

           

          TSQL

          PL/SQL

          連接

          +

          ||

           

          TRIM

          LTRIMRTRIM

           

          SUBSTRING

          SUBSTRSUBSTRB

           

           

          INSTRINSTRB

           

          right(str,n)

          substr(str,-n)

           

          日期

           

          TSQL

          PL/SQL

          系統(tǒng)日期

          getdate()

          SYSDATE

           

           

           

           

          空值判斷與處理

           

          TSQL

          PL/SQL

          判斷

          IS NULL

          IS NULL

          空值替換

          Isnull(para,0)

          NVL(para,0)

          REPLACE(old_string, NULL, my_string)

           

           

           轉(zhuǎn)換

           

          TSQL

          PL/SQL

          字符->日期

          Convert(datetime, expr, style)

          To_Date(format, expr)

          字符<-日期、數(shù)值

          Convert(char(n), expr, style)

          To_char(expr,format)

          數(shù)值

           

          To_Number()

          語(yǔ)句

           

          TSQL

          PL/SQL

          statement block

          BEGIN...END

          BEGIN...END;

          conditional

          1) IF…ELSE…

          2) IF…ELSE IF…else…

          3) CASE

          1)IF..then...ELSE…end if;

          2)If…then…

           elsif…else…endif

          3)decode

          Repeat

          WHILE Boolean_expression

              {statement_block}

              [BREAK]

              {statement_block}

              [CONTINUE]

           

          1)Loop …exit;…end loop;

          2)loop…exit when…end loop;

          3)WHILE condition LOOP

           sequence_of_statements;

            EXIT WHEN boolean_expression;

           END LOOP;

          3)for…in [reverse]…loop

           …

           end loop;

          GOTO

          GOTO label

          label:

          GOTO label;

          <<label>>

          Exits unconditionally

          RETURN

          Return;

          Sets a delay for statement execution

          WAITFOR

           

          Comment

          --

          /*…*/

          --

          /*…*/

          PRINT

          PRINT string

          Set serveroutput on

          dbms_output.put_line(string);

          RAISERROR

          RAISERROR

           

          EXECUTE

          EXECUTE

           

          NULL statement

           

          NULL;

           

          4)cursor

           

          TSQL

          PL/SQL

          DECLARE

          DECLARE cursor_name CURSOR

          [LOCAL | GLOBAL]

          [FORWARD_ONLY | SCROLL]

          [STATIC | KEYSET | DYNAMIC | FAST_FORWARD]

          [READ_ONLY | SCROLL_LOCKS | OPTIMISTIC]

          [TYPE_WARNING]

          FOR select_statement

          [FOR UPDATE [OF column_name [,...n]]]

          DECLARE

             CURSOR cursor_name IS

                SELECT_statement;

          open

          Open cursor_name

          Open cursor_name;

          Fetch

          Fetch cursor_name into

           var1,var2…

          Fetch cursor_name into

           var1,var2…

          ||

           %rowtype_var;

          Close

          Close cursor_name

          Close cursor_name;

          Attribute

          @@FETCH_STATUS

          @@CURSOR_ROWS

          CURSOR_STATUS

          %found

          %notfound

          %isopen

          %rowcount

          DEALLOCATE

          DEALLOCATE cursor_name

           

          隱式cursor

           

          Select…into (僅可處理單行記錄)

           

           

           

           

          5)trigger

           

          TSQL

          PL/SQL

          創(chuàng)建

          CREATE TRIGGER trigger_name

          ON table

          [WITH ENCRYPTION]

          {FOR {[DELETE][,][INSERT][,] [UPDATE] }

          AS

              sql_statement [...n]

          }

           Create or replace trigger t_name

           {before|after}{insert|update|delete}

           on table_name

           [for each row [when conditional]

           …

          類型(按觸發(fā)級(jí)別和時(shí)序)

          語(yǔ)句

          after

          行或語(yǔ)句

          before or after

          訪問(wèn)數(shù)據(jù)操縱行的值

          通過(guò)表InsertedDeleted訪問(wèn)

          通過(guò)記錄 :New :Old訪問(wèn),僅可用于行級(jí)觸發(fā)器

          謂詞/函數(shù)/屬性

          Insertingupdatingdeleteing

          Updating(col)

          Update(col)

          使能

          Alter table tabname {disable|enable} trigger {t_name|all}

          Alter trigger t_name {disable|enable}

          限制

           

          作為觸發(fā)語(yǔ)句的一部分,不可用事務(wù)控制命令

          不能聲明和使用LONGLONG RAW變量和列

          刪除

          Drop trigger t_name

          Drop trigger t_name;

           

          6)procedure

           

          TSQL

          PL/SQL

          創(chuàng)建

          CREATE PROCEDURE] p_name

           [ {@parameter data_type} [VARYING] [= default] [OUTPUT] ] [,...n]

          [WITH

           {

             RECOMPILE | ENCRYPTION

             | RECOMPILE, ENCRYPTION

           }

          ]

          AS

              sql_statement [...n]

          Create or replace procedure p_name

           [Para1 {in|out|inout} datatype[,…]

           [{:=|default} default_value]]

          {IS|AS}

          查詢

           

           

          刪除

          DROP PROCEDURE p_name

          DROP PROCEDURE p_name;

          調(diào)用

          EXEC p_name [para1[,…]]

          P_name[(para1[,…])];

          參數(shù)

          按位置傳遞

          1)按位置傳遞

          2)帶名傳遞

           P_name(para1=>var1);

           

          debit_account(amount => 500, acct_id => 10261);

          7)數(shù)據(jù)字典/系統(tǒng)表

           

          TSQL

          PL/SQL

          系統(tǒng)對(duì)象表

          Dbo.sysobjects

          User_sourceUser_objects(OBJ)User_tables(TABS)User_triggersALL_tablesAll_ViewAll_catalogAll_objects

          對(duì)象腳本

          sp_helptext

          DESCALL_source

          用戶表

          Sysusers

          All_users

          表列

           

          All_tab_columns

          依賴

           

          All_dependencies

          字典表說(shuō)明

           

          DICT

           

          8)SQL

           

          TSQL

          PL/SQL

          Select

          Select @var=<value>

           

          Select value into var from dual

           

          Insert

          insert / insert into

          insert into

          Delete

           

           

          比較

           

          Any, some, all

          集合

           

          UnionUnion allIntersectMinus

          9)全局變量

           

          TSQL

          PL/SQL

          語(yǔ)句執(zhí)行成功

          error

          SQLCODE

          select 是否有結(jié)果

          exists

          select...into + SQL%FOUND

           

          10)     命令行查詢工具

           

          ISQL

          SQL PLUS

          讀取、執(zhí)行SQL文件

          Isql –Usa –Ppass –Shost –ifile

          sqlplus [-s] user/pass@db -@filename

           

           

           

           

           

           

           

           

           

           

          11)     雜項(xiàng)

           

          TSQL

          PL/SQL

          SQL語(yǔ)句中

          Insert…With tablock

          Insert…With Tablockx

          Select…for update

          Select…for readonly

          獨(dú)立語(yǔ)句

          set transcation isolation level to Read uncommited

           

          SQL語(yǔ)句中

          select …for update of…;

           

          獨(dú)立語(yǔ)句

          lock table tabname in row share mode;

          lock table tabname in share exclusive mode;

           

          用戶連接數(shù)

           

           

          數(shù)據(jù)庫(kù)文件

          Device

          Tablespace

           

          CREATE TABLESPACE testdb DATAFILE 'C:\ORANT\DATABASE\testdb.ORA' SIZE 20M AUTOEXTEND ON NEXT 2M;

          CREATE ROLLBACK SEGMENT "RB_TESTDB" TABLESPACE "TESTDB";

          ALTER ROLLBACK SEGMENT "RB_TESTDB" ONLINE;

           

          顯示DML執(zhí)行計(jì)劃

          Show plan

          Explain plan

          保留點(diǎn)

          ¨         Save transcation Sp_name

          ¨         ROLLBACK TRANSACTION percentchanged

          ¨         Savepoint Sp_name

          ¨         Rollback to savepoint sp_name

          對(duì)模式對(duì)象改名

          Rename

           

          分析對(duì)象

          Analyze

          Sp_help?

           

           

           

           

           1. select into 語(yǔ)法
           
          現(xiàn)在有表
          tablea
          (
           cola int ,
           colb varchar(20)
          )
           
          要把tablea中滿足條件(cola <100)的記錄生成新的表tableb。
           
          在ms sqlserver 可以直接用select into語(yǔ)法:
          select * into tableb
          where cola < 100
           
          在oracle中語(yǔ)法如下:
          create table tableb
          as
          (
            select * from tablea
              where cola <100
          )

          posted on 2012-08-16 08:46 奮斗成就男人 閱讀(519) 評(píng)論(0)  編輯  收藏 所屬分類: SQL

          主站蜘蛛池模板: 桂林市| 忻城县| 稷山县| 富川| 宝鸡市| 铁岭县| 伊宁市| 商水县| 仁怀市| 承德市| 阜新市| 定南县| 神农架林区| 烟台市| 镇江市| 平陆县| 依兰县| 青河县| 山西省| 怀柔区| 朝阳县| 宁南县| 缙云县| 互助| 晴隆县| 宝清县| 达州市| 灯塔市| 旅游| 乐陵市| 绿春县| 饶阳县| 周宁县| 澄江县| 疏勒县| 工布江达县| 无为县| 九江市| 巩义市| 遵义县| 思茅市|