Oracle pl/sql總結

(1)SEQNAME.NEXTVAL裏面的值如何讀出來?能夠直接在insert into test values(SEQNAME.NEXTVAL) 是能夠用   這樣:      java

SELECT tmp#_seq.NEXTVAL sql

        INTO id_temp 數據庫

        FROM DUAL;  而後能夠用id_temp express

(2)PLS-00103: 出現符號 ">"在須要下列之一時: 編程

代碼以下:     服務器

IF (sum>0) session

      THEN 編輯器

   begin 模塊化

         INSERT INTO emesp.tp_sn_PRoduction_log 函數

              VALUES (r_serial_number, , id_temp);

         EXIT;

    end;

一直報sum>0 這是個很鬱悶的問題 由於變量用了sum  因此不行,後改成i_sum>0

(3)Oracle 語法

1. Oracle應用編輯方法概覽

答:1) Pro*C/C++/... : C語言和數據庫打交道的方法,比OCI更經常使用;

    2) ODBC

    3) OCI: C語言和數據庫打交道的方法,和ProC很類似,更底層,不多用;

    4) SQLJ: 很新的一種用java訪問Oracle數據庫的方法,會的人很少;

    5) JDBC

    6) PL/SQL: 存儲在數據內運行, 其餘方法爲在數據庫外對數據庫訪問;

2. PL/SQL

答:1) PL/SQL(Procedual language/SQL)是在標準SQL的基礎上增長了過程化處理的語言;

    2) Oracle客戶端工具訪問Oracle服務器的操做語言;

    3) Oracle對SQL的擴充;

4. PL/SQL的優缺點

答:優勢:

    1) 結構化模塊化編程,不是面向對象;

    2) 良好的可移植性(無論Oracle運行在何種操做系統);

    3) 良好的可維護性(編譯經過後存儲在數據庫裏);

    4) 提高系統性能;

    第二章

PL/SQL程序結構

1. PL/SQL塊

答:1) 申明部分, DECLARE(不可少);

    2) 執行部分, BEGIN...END;

    3) 異常處理,EXCEPTION(能夠沒有);

2. PL/SQL開發環境

答:能夠運用任何純文本的編輯器編輯,例如:VI    ;toad很好用

3. PL/SQL字符集

答:PL/SQL對大小寫不敏感

4. 標識符命名規則

答:1) 字母開頭;

    2) 後跟任意的非空格字符、數字、貨幣符號、下劃線、或# ;

    3) 最大長度爲30個字符(八個字符左右最合適);

5. 變量聲明

答:語法

    Var_name type [CONSTANT][NOT NULL][:=value];

    注:1) 申明時能夠有默認值也能夠沒有;

        2) 若有[CONSTANT][NOT NULL], 變量必定要有一個初始值;

        3) 賦值語句爲「:=」;

        4) 變量能夠認爲是數據庫裏一個字段;

        5) 規定沒有初始化的變量爲NULL;

第三章

1. 數據類型

答:1) 標量型:數字型、字符型、布爾型、日期型;

    2) 組合型:RECORD(經常使用)、TABLE(經常使用)、VARRAY(較少用)

    3) 參考型:REF CURSOR(遊標)、REF object_type

    4) LOB(Large Object)

2. %TYPE

答:變量具備與數據庫的表中某一字段相同的類型

    例:v_FirstName studengts.first_name%TYPE;

3. RECORD類型

答:TYPE record_name IS RECORD(            /*其中TYPE,IS,RECORD爲關鍵字,record_name爲變量名稱*/

field1 type [NOT NULL][:=expr1],   /*每一個等價的成員間用逗號分隔*/

field2 type [NOT NULL][:=expr2],   /*若是一個字段限定NOT NULL,那麼它必須擁有一個初始值*/

        ...                                /*全部沒有初始化的字段都會初始爲NULL

fieldn type [NOT NULL][:=exprn]);

4. %ROWTYPE

答:返回一個基於數據庫定義的類型

    DECLARE

      v_StuRec Student%ROWTYPE;            /*Student爲表的名字*/

    注:與3中定一個record相比,一步就完成,而3中定義分二步:a. 全部的成員變量都要申明; b. 實例化變量;

5. TABLE類型

答:TYPE tabletype IS TABLE OF type INDEX BY BINARY_INTEGER;

    例:DECLARE

          TYPE t_StuTable IS TABLE OF Student%ROWTYPE INDEX BY BINARY_INTERGER;

          v_Student t_StuTable;

BEGIN

          SELECT * INTO v_Student(100) FROM Student WHERE id = 1001;

        END;

    注:1) 行的數目的限制由BINARY_INTEGER的範圍決定;

6. 變量的做用域和可見性

答:1) 執行塊裏能夠嵌入執行塊;

    2) 裏層執行塊的變量對外層不可見;

    3) 裏層執行塊對外層執行塊變量的修改會影響外層塊變量的值;

第四章

1. 條件語句

答:IF boolean_expression1 THEN

    ...

    ELSIF boolean_expression2 THEN   /*注意是ELSIF,而不是ELSEIF*/

    ...                              /*ELSE語句不是必須的,但END IF;是必須的*/

    ELSE

    ...

    END IF;

2. 循環語句

答:1) Loop

       ...

         IF boolean_expr THEN        /* */

            EXIT;                    /* EXIT WHEN boolean_expr */

         END IF;                     /* */

       END LOOP;

    2) WHILE boolean_expr LOOP

       ...

       END LOOP;

    3) FOR loop_counter IN [REVERSE] low_blound..high_bound LOOP

       ...

       END LOOP;

       注:a. 加上REVERSE 表示遞減,從結束邊界到起始邊界,遞減步長爲一;

           b. low_blound  起始邊界; high_bound  結束邊界;

3. GOTO語句

答:GOTO label_name;

    1) 只能由內部塊跳往外部塊;

    2) 設置標籤:<<label_name>>

    3) 示例:

       LOOP

       ...

         IF D%ROWCOUNT = 50 THEN

            GOTO l_close;

         END IF;

       ...

       END LOOP;

       <<l_close>>;

       ...

4. NULL語句

答:在語句塊中加空語句,用於補充語句的完整性。示例:

    IF boolean_expr THEN

    ...

    ELSE

      NULL;

    END IF;

5. SQL in PL/SQL

答:1) 只有DML SQL能夠直接在PL/SQL中使用;

第五章

1. 遊標(CURSOR)

答:1) 做用:用於提取多行數據集;

    2) 聲明:a. 普通申明:DELCARE CURSOR CURSOR_NAME IS select_statement  /* CURSOR的內容必須是一條查詢語句*/

             b. 帶參數申明:DELCARE CURSOR c_stu(p_id student.ID%TYPE) SELECT * FROM student WHERE ID = p_id;

    3) 打開遊標:OPEN Cursor_name;   /*至關於執行select語句,且把執行結果存入CURSOR;

    4) 從遊標中取數:a. FETCH cursor_name INTO var1, var2, ...; /*變量的數量、類型、順序要和Table中字段一致;*/

                     b. FETCH cursor_name INTO record_var;

       注:將值從CURSOR取出放入變量中,每FETCH一次取一條記錄;

    5) 關閉遊標: CLOSE Cursor_name;

       注:a. 遊標使用後應該關閉;

           b. 關閉後的遊標不能FETCH和再次CLOSE;

           c. 關閉遊標至關於將內存中CURSOR的內容清空;

2. 遊標的屬性

答:1) %FOUND:    是否有值;

    2) %NOTFOUND: 是否沒有值;

    3) %ISOPEN:   是不是打開狀態;

    4) %ROWCOUNT: CURSOR當前的記錄號;

3. 遊標的FETCH循環

答:1) LOOP

         FETCH cursor INTO ...

         EXIT WHEN cursor%NOTFOUND;   /*當cursor中沒記錄後退出*/

       END LOOP;

    2) WHILE cursor%FOUND LOOP

         FETCH cursor INTO ...

       END LOOP;

    3) FOR var IN cursor LOOP

         FETCH cursor INTO...

       END LOOP;

      

第六章

1. 異常

答:DECLARE

      ...

      e_TooManyStudents EXCEPTION;  /* 申明異常 */

      ...

    BEGIN

      ...

      RAISE e_TooManyStudents;      /* 觸發異常 */

      ...

    EXCEPTION

      WHEN e_TooManyStudents THEN   /* 觸發異常 */

      ...

      WHEN OTHERS THEN              /* 處理全部其餘異常 */

      ...

    END;

2004-9-8     星期三    陰

PL/SQL數據庫編程(下)

1. 存儲過程(PROCEDURE)

答:建立過程:

    CREATE [OR REPLACE] PROCEDURE proc_name

         [(arg_name[{IN|OUT|IN OUT}]TYPE,

           arg_name[{IN|OUT|IN OUT}]TYPE)]

          {IS|AS}

    procedure_body

    1) IN: 表示該參數不能被賦值(只能位於等號右邊);

    2) OUT:表示該參數只能被賦值(只能位於等號左邊);

    3) IN OUT: 表示該類型既能被賦值也能傳值;

2. 存儲過程例子

答:CREATE OR REPLACE PROCEDURE ModeTest(

        p_InParm IN NUMBER,

        p_OutParm OUT NUMBER,

        p_InOutParm IN OUT NUMBER)

    IS

        v_LocalVar NUMBER;                      /* 聲明部分 */

    BEGIN

        v_LocalVar:=p_InParm;                   /* 執行部分 */

        p_OutParm:=7;

        p_InOutParm:=7;

        ...

    EXCEPTION

        ...                                     /* 異常處理部分 */

    END ModeTest;

   

3. 調用PROCEDURE的例子

答:1) 匿名塊能夠調;

    2) 其餘PROCDEURE能夠調用;

    例:

    DECLARE

        v_var1 NUMBER;

    BEGIN

        ModeTest(12, v_var1, 10);

    END;

    注:此時v_var1等於7

4. 指定實參的模式

答:1) 位置標示法:調用時添入全部參數,實參與形參按順序一一對應;

    2) 名字標示法:調用時給出形參名字,並給出實參

       ModeTest(p_InParm=>12, p_OutParm=>v_var1, p_Inout=>10);

    注:a. 兩種方法能夠混用;

        b. 混用時第一個參數必須經過位置來指定。

5. 函數(Function)與過程(Procedure)的區別

答:1) 過程調用自己是一個PL/SQL語句(能夠在命令行中經過exec語句直接調用);

    2) 函數調用是表達式的一部分;

6. 函數的聲明

答:CREATE [OR REPLACE] PROCEDURE proc_name

        [(arg_name[{IN|OUT|IN OUT}]TYPE,

          arg_name[{IN|OUT|IN OUT}]TYPE)]

    RETURN TYPE

    {IS|AS}

    procedure_body

    注:1) 沒有返回語句的函數將是一個錯誤;

7. 刪除過程與函數

答:DROP PROCEDURE proc_name;

    DROP FUNCTION func_name;

第八章

1. 包

答:1) 包是能夠將相關對象存儲在一塊兒的PL/SQL的結構;

    2) 包只能存儲在數據庫中,不能是本地的;

    3) 包是一個帶有名字的聲明;

    4) 至關於一個PL/SQL塊的聲明部分;

    5) 在塊的聲明部分出現的任何東西都能出如今包中;

    6) 包中能夠包含過程、函數、遊標與變量;

    7) 能夠從其餘PL/SQL塊中引用包,包提供了可用於PL/SQL的全局變量。

    8) 包有包頭和包主體,如包頭中沒有任何函數與過程,則包主體能夠不須要。

2. 包頭

答:1) 包頭包含了有關包的內容的信息,包頭不含任何過程的代碼。

    2) 語法:

       CREATE [OR REPLACE] PACKAGE pack_name {IS|AS}

            procedure_specification|function_specification|variable_declaration|type_definition|exception_declaration|cursor_declaration

       END pack_name;

    3) 示例:

       CREATE OR REPLACE PACKAGE pak_test AS

           PROCEDURE RemoveStudent(p_StuID IN students.id%TYPE);

           TYPE t_StuIDTable IS TABLE OF students.id%TYPE INDEX BY BINARY_INTEGER;

       END pak_test;

3. 包主體

答:1) 包主體是可選的,如包頭中沒有任何函數與過程,則包主體能夠不須要。

    2) 包主體與包頭存放在不一樣的數據字典中。

    3) 如包頭編譯不成功,包主體沒法正確編譯。

    4) 包主體包含了全部在包頭中聲明的全部過程與函數的代碼。

    5) 示例:

       CREATE OR REPLACE PACKAGE BODY pak_test AS

           PROCEDURE RemoveStudent(p_StuID IN students.id%TYPE) IS

           BEGIN

              ...

           END RemoveStudent;

           TYPE t_StuIDTable IS TABLE OF students.id%TYPE INDEX BY BINARY_INTEGER;

       END pak_test;

4. 包的做用域

答:1) 在包外調用包中過程(需加包名):pak_test.AddStudent(100010, 'CS', 101);

    2) 在包主體中能夠直接使用包頭中聲明的對象和過程(不需加包名);

5. 包中子程序的重載

答:1) 同一個包中的過程與函數均可以重載;

    2) 相同的過程或函數名字,但參數不一樣;

6. 包的初始化

答:1) 包存放在數據庫中;

    2) 在第一次被調用的時候,包從數據庫中調入內存並被初始化;

    3) 包中定義的全部變量都被分配內存;

    4) 每一個會話都將擁有本身的包內變量的副本。

第九章

1. 觸發器

答:1) 觸發器與過程/函數的相同點

       a. 都是帶有名字的執行塊;

       b. 都有聲明、執行體和異常部分;

    2) 觸發器與過程/函數的不一樣點

       a. 觸發器必須存儲在數據庫中;

       b. 觸發器自動執行;

2. 建立觸發器

答:1) 語法:

       CREATE [OR REPLACE] TRIGGER trigger_name

       {BEFORE|AFTER} triggering_event ON table_reference

       [FOR EACH ROW [WHEN trigger_condition]]

       trigger_body;

    2) 範例:

       CREATE OR REPLACE TRIGGER UpdateMajorStats AFTER INSERT OR DELETE OR UPDATE ON students

       DECLARE

           CURSOR c_Statistics IS

               SELECT * FROM students GROUP BY major;

       BEGIN

           ...

       END Up;

3. 觸發器

答:1) 三個語句(INSERT/UPDATE/DELETE);

    2) 二種類型(以前/以後);

    3) 二種級別(row-level/statement-level);

    因此一共有 3 X 2 X 2 = 12

4. 觸發器的限制

答:1) 不該該使用事務控制語句;

    2) 不能聲明任何LONG或LONG RAW變量;

    3) 能夠訪問的表有限。

5. 觸發器的主體能夠訪問的表

答:1) 不能夠讀取或修改任何變化表(被DML語句正在修改的表);

    2) 不能夠讀取或修改限制表(帶有約束的表)的主鍵、惟一值、外鍵列。

(4)Java開發中使用Oracle的ORA-01000

不少朋友在Java開發中,使用Oracle數據庫的時候,常常會碰到有ORA-01000: maximum open cursors exceeded.的錯誤。

實際上,這個錯誤的緣由,主要仍是代碼問題引發的。

ora-01000: maximum open cursors exceeded.

表示已經達到一個進程打開的最大遊標數。

這 樣的錯誤很容易出如今Java代碼中的主要緣由是:Java代碼在執行conn.createStatement()和 conn.prepareStatement()的時候,實際上都是至關與在數據庫中打開了一個cursor。尤爲是,若是你的 createStatement和prepareStatement是在一個循環裏面的話,就會很是容易出現這個問題。由於遊標一直在不停的打開,並且沒 有關閉。

通常來講,咱們在寫Java代碼的時候,createStatement和prepareStatement都應該要放在循環外面,並且 使用了這些Statment後,及時關閉。最好是在執行了一次executeQuery、executeUpdate等以後,若是不須要使用結果集 (ResultSet)的數據,就立刻將Statment關閉。

對於出現ORA-01000錯誤這種狀況,單純的加大open_cursors並非好辦法,那只是治標不治本。實際上,代碼中的隱患並無解除。

並且,絕大部分狀況下,open_cursors只須要設置一個比較小的值,就足夠使用了,除非有很是特別的要求。

 

(5)在store procedure中執行 DDL語句

一 是:execute immediate 'update '||table_chan||' set '||column_changed||' = '''||v_trans_name||''' where empid = '''||v_empid||'''' ;

二是:The DBMS_SQL package can be used to execute DDL statements directly from PL/SQL.  

這是一個建立一個表的過程的例子。該過程有兩個參數:表名和字段及其類型的列表。

CREATE OR REPLACE PROCEDURE ddlproc (tablename varchar2, cols varchar2) AS

  cursor1 INTEGER;

BEGIN

  cursor1 := dbms_sql.open_cursor;

  dbms_sql.parse(cursor1, 'CREATE TABLE ' || tablename ||     ' ( ' || cols || ' )', dbms_sql.v7);

  dbms_sql.close_cursor(cursor1);

end;

/

2 如何找數據庫表的主鍵字段的名稱?

SQL>SELECT * FROM user_constraints

WHERE CONSTRAINT_TYPE='P' and table_name='TABLE_NAME';

3 如何查詢數據庫有多少表?

SQL>select * from all_tables;

4 使用sql統配符

通 配符 描述 示例 % 包含零個或更多字符的任意字符串。 WHERE title LIKE '%computer%' 將查找處於書名任意位置的包含單詞 computer 的全部書名。 _(下劃線) 任何單個字符。 WHERE au_fname LIKE '_ean' 將查找以 ean 結尾的全部 4 個字母的名字(Dean、Sean 等)。 [ ] 指定範圍 ([a-f]) 或集合 ([abcdef]) 中的任何單個字符。 WHERE au_lname LIKE '[C-P]arsen' 將查找以arsen 結尾且以介於 C 與 P 之間的任何單個字符開始的做者姓氏,例如,Carsen、Larsen、Karsen 等。 [^] 不屬於指定範圍 ([a-f]) 或集合 ([abcdef]) 的任何單個字符。 WHERE au_lname LIKE 'de[^l]%' 將查找以 de 開始且其後的字母不爲 l 的全部做者的姓氏。

5使普通用戶有查看v$session的權限

GRANT SELECT

    ON  "SYS"."V_$OPEN_CURSOR" TO "SFISM4"; 

GRANT SELECT

    ON  "SYS"."V_$SESSION" TO "SFISM4";

經常使用函數

distinct

去掉重複的

minus 相減

在第一個表但不在第二個表

SELECT * FROM FOOTBALL MINUS SELECT * FROM SOFTBALL;

intersect 相交

INTERSECT 返回兩個表中共有的行。

SELECT * FROM FOOTBAL;

UNION ALL 與UNION 同樣對錶進行了合併可是它不去掉重複的記錄。

彙總函數

count

select count(*) from test;

SUM

SUM 就如同它的本意同樣它返回某一列的全部數值的和。

SELECT SUM(SINGLES) TOTAL_SINGLES FROM TEST;

SUM 只能處理數字若是它的處理目標不是數字你將會收到以下信息

輸入/輸出

SQL>SELECT SUM(NAME) FROM TEAMSTATS;

ERROR

ORA-01722 invalid number

no rows selected

該錯誤信息固然的合理的由於NAME 字段是沒法進行彙總的。

AVG

AVG 能夠返回某一列的平均值。

SELECT AVG(SO) AVE_STRIKE_OUTS FROM TEAMSTATS;

MAX

若是你想知道某一列中的最大值請使用MAX。

SELECT MAX(HITS) FROM TEAMSTATS;

MIN

MIN 與MAX 相似它返回一列中的最小數值。

VARIANCE

VARIANCE 方差不是標準中所定義的但它倒是統計領域中的一個相當重要的數值。

SELECT VARIANCE(HITS)  FROM TEAMSTATS;

STDDEV

這是最後一個統計函數STDDEV 返回某一列數值的標準差。

SELECT STDDEV HITS FROM TEAMSTATS;

日期時間函數

ADD_MONTHS 

ADD_MONTHS也能夠工做在select 以外

該函數的功能是將給定的日期增長一個月舉例來講因爲一些特殊的緣由上述的計劃須要推遲兩個月那麼就用到了。

LAST_DAY

LAST_DAY 能夠返回指定月份的最後一天.

MONTHS_BETWEEN

若是你想知道在給定的兩個日期中有多少個月可使用MONTHS_BETWEEN。

select task, startdate, enddate ,months between(Startdate,enddate) duration from project;

返回結果有多是負值.

能夠利用負值來判斷某一日期是否在另外一個日期以前下例將會顯示全部在1995 年5 月19 日之前開始的比賽.

SELECT * FROM PROJECT

WHERE MONTHS_BETWEEN ('19-MAY-95', STARTDATE)>0;

NEW_TIME

若是你想把時間調整到你所在的時區你可使用NEW_TIME.

SQL>SELECT ENDDATE EDT, NEW_TIME('ENDDATE',' EDT',' PDT') FROM PROJECT;

NEXT_DAY

NEXT_DAY 將返回與指定日期在同一個星期或以後一個星期內的你所要求的星期天

數的確切日期若是你想知道你所指定的日期的星期五是幾號能夠這樣作.

SQL>SELECT STARTDATE, NEXT_DAY(STARTDATE,' FRIDAY') FROM PROJECT;

SYSDATE

SYSDATE 將返回系統的日期和時間。

SELECT DISTINCT SYSDATE FROM PROJECT;

數學函數

ABS

ABS 函數返回給定數字的絕對值

CEIL 和FLOOR

CEIL 返回與給定參數相等或比給定參數在的最小整數.FLOOR 則正好相反它返回

與給定參數相等或比給定參數小的最大整數.

COS COSH SIN SINH TAN TANH

COS SIN TAN 函數能夠返回給定參數的三角函數值默認的參數認定爲弧度制.

EXP

EXP 將會返回以給定的參數爲指數以e 爲底數的冪.

LN and LOG

這是兩個對數函數其中LN 返回給定參數的天然對數.

MOD

知道在ANSI 標準中規定取模運算的符號爲%在一些解釋器中被函數MOD 所取代.

POWER

該函數能夠返回某一個數對另外一個數的冪在使用冪函數時第一個參數爲底數第二個爲指數。

SIGN

若是參數的值爲負數那麼SIGN 返回-1 若是參數的值爲正數那麼SIGN 返回1,若是參數爲零那麼SIGN 也返回零.

SQRT

該函數返回參數的平方根,因爲負數是不能開平方的因此咱們不能將該函數應用於負數.

字符函數

CHR

該函數返回與所給數值參數等當的字符返回的字符取決於數據庫所依賴的字符集.

CONCAT

和||一個做用,把兩個字符串鏈接起來.

INITCAP

該函數將參數的第一個字母變爲大寫此外其它的字母則轉換成小寫.

LOWER 和UPPER

如你所料LOWER 將參數轉換爲所有小寫字母而UPPER 則把參數所有轉換成大寫字母.

LPAD 與RPAD

這兩個函數最少須要兩個參數最多須要三個參數每個參數是須要處理的字符串

第二個參數是須要將字符串擴充的寬度第三個參數表示加寬部分用什麼字符來作填補

第三個參數的默認值爲空格但也能夠是單個的字符或字符串.

LTRIM 與RTRIM

LTRIM 和RTRIM至少須要一個參數最多容許兩個參數第一個參數與LPAD 和RPAD

相似是一個字符串第二個參數也是一個字符或字符串默認則是空格若是第二個

數不是空格的話那麼該函數將會像剪除空格那樣剪除所指定的字符.

REPLACE

它的工做就若是它的名字所說的那樣該函數須要三個參數第一個參數是須要搜索

的字符串(列名),第二個參數是搜索的內容第三個參數則是須要替換成的字符串若是第三個

參數省略或者是NULL 那麼將只執行搜索操做而不會替換任何內容.

SUBSTR

這個函數有三個參數容許你將目標字符串的一部份輸出,第一個參數爲目標字符串,

第二個字符串是將要輸出的子串的起點,第三個參數是將要輸出的子串的長度。

若是第二個參數爲負數那麼將會從源串的尾部開始向前定位至負數的絕對值的位置。

TRANSLATE

這一函數有三個參數,目標字符串、源字符串和目的字符串,在目標字符串與源字符

串中均出現的字符將會被替換成對應的目的字符串的字符。

INSTR

若是須要知道在一個字符串中知足特定的內容的位置可使用INSTR ,它的第一個參

數是目標字符串,第二個參數是匹配的內容,第三和第四個參數是數字用以指定開始搜

索的起點以及指出第幾個知足條件的將會被返回。

LENGTH

LENGTH將返回指定字符串的長度。

轉換函數

轉換函數有三個可使你方便地將數據從一種類型變換爲另外一種類型。

TO_CHAR

該函數的最初功能是將一個數字轉換爲字符型,不一樣的解釋器可能會使用它來轉換其它的

數據類型例如日期型轉換爲字符型或者是擁有更多的參數。

TO_NUMBER

該函數與TO_CHAR 函數相對應顯而易見它是將一個字符串型數字轉換爲數值型。

其餘函數

GREATEST 與LEAST

這兩個函數將返回幾個表達式中最大的和最小的。

SELECT GREATEST(‘ALPHA’,‘ BRAVO’,‘ FOXTROT’,‘ DELTA’) FROM CONVERT;

看來有必要使用FROM 子句但是若是FROM 子句沒有的話你將會收到一個錯誤信息每

一個SELECT 語句都須要FROM 子句。

USER

該函數返回當前使用數據庫的用戶的名

相關文章
相關標籤/搜索