中文字幕人妻中文_99精品欧美一区二区三区综合在线_精品久久久久一区二区_色月丁香_免费福利在线视频_欧美大片免费观看网址_国产伦精品一区二区三区在线播放_污污污污污污www网站免费_久久月本道色综合久久_色69激情爱久久_尹人香蕉久久99天天拍_国产美女www_亚洲国产精品无码7777一线_五月婷婷六月激情_看免费一级片_精品久久久久久成人av_在线色亚洲_女人另类性混交zo_国产精品青青在线观看爽香蕉_人人澡人人添人人爽一区二区

主頁 > 知識庫 > PostgreSQL教程(二十):PL/pgSQL過程語言

PostgreSQL教程(二十):PL/pgSQL過程語言

熱門標簽:海豐有多少商家沒有地圖標注 美容工作室地圖標注 打電話智能電銷機器人授權 重慶自動外呼系統定制 地圖標注和圖片名稱的區別 辦公外呼電話系統 外呼調研系統 漯河外呼電話系統 合肥公司外呼系統運營商

一、概述:

    PL/pgSQL函數在第一次被調用時,其函數內的源代碼(文本)將被解析為二進制指令樹,但是函數內的表達式和SQL命令只有在首次用到它們的時候,PL/pgSQL解釋器才會為其創建一個準備好的執行規劃,隨后對該表達式或SQL命令的訪問都將使用該規劃。如果在一個條件語句中,有部分SQL命令或表達式沒有被用到,那么PL/pgSQL解釋器在本次調用中將不會為其準備執行規劃,這樣的好處是可以有效地減少為PL/pgSQL函數里的語句生成分析和執行規劃的總時間,然而缺點是某些表達式或SQL命令中的錯誤只有在其被執行到的時候才能發現。
    由于PL/pgSQL在函數里為一個命令制定了執行計劃,那么在本次會話中該計劃將會被反復使用,這樣做往往可以得到更好的性能,但是如果你動態修改了相關的數據庫對象,那么就有可能產生問題,如:
 

復制代碼 代碼如下:

    CREATE FUNCTION populate() RETURNS integer AS $$
    DECLARE
        -- 聲明段
    BEGIN
        PERFORM my_function();
    END;
    $$ LANGUAGE plpgsql;
 

    在調用以上函數時,PERFORM語句的執行計劃將引用my_function對象的OID。在此之后,如果你重建了my_function函數,那么populate函數將無法再找到原有my_function函數的OID。要解決該問題,可以選擇重建populate函數,或者重新登錄建立新的會話,以使PostgreSQL重新編譯該函數。要想規避此類問題的發生,在重建my_function時可以使用CREATE OR REPLACE FUNCTION命令。

    鑒于以上規則,在PL/pgSQL里直接出現的SQL命令必須在每次執行時均引用相同的表和字段,換句話說,不能將函數的參數用作SQL命令的表名或字段名。如果想繞開該限制,可以考慮使用PL/pgSQL中的EXECUTE語句動態地構造命令,由此換來的代價是每次執行時都要構造一個新的命令計劃。

    使用PL/pgSQL函數的一個非常重要的優勢是可以提高程序的執行效率,由于原有的SQL調用不得不在客戶端與服務器之間反復傳遞數據,這樣不僅增加了進程間通訊所產生的開銷,而且也會大大增加網絡IO的開銷。

二、PL/pgSQL的結構:

    PL/pgSQL是一種塊結構語言,函數定義的所有文本都必須在一個塊內,其中塊中的每個聲明和每條語句都是以分號結束,如果某一子塊在另外一個塊內,那么該子塊的END關鍵字后面必須以分號結束,不過對于函數體的最后一個END關鍵字,分號可以省略,如:
 

復制代碼 代碼如下:

    [ label>> ]
    [ DECLARE declarations ]
    BEGIN
        statements
    END [ label ];
 

    在PL/pgSQL中有兩種注釋類型,雙破折號(--)表示單行注釋。/* */表示多行注釋,該注釋類型的規則等同于C語言中的多行注釋。
    在語句塊前面的聲明段中定義的變量在每次進入語句塊(BEGIN)時都會將聲明的變量初始化為它們的缺省值,而不是每次函數調用時初始化一次。如:
 
復制代碼 代碼如下:

    CREATE FUNCTION somefunc() RETURNS integer AS $$
    DECLARE
       quantity integer := 30;
    BEGIN
       RAISE NOTICE 'Quantity here is %', quantity;      --在這里的數量是30
       quantity := 50;
       --
       -- 創建一個子塊
       --
       DECLARE
          quantity integer := 80;
       BEGIN
          RAISE NOTICE 'Quantity here is %', quantity;   --在這里的數量是80
       END;
       RAISE NOTICE 'Quantity here is %', quantity;      --在這里的數量是50   
       RETURN quantity;
    END;
    $$ LANGUAGE plpgsql;
    #執行該函數以進一步觀察其執行的結果。
    postgres=# select somefunc();
    NOTICE:  Quantity here is 30
    NOTICE:  Quantity here is 80
    NOTICE:  Quantity here is 50
     somefunc
    ----------
           50
    (1 row)

    最后需要說明的是,目前版本的PostgreSQL并不支持嵌套事務,函數中的事物總是由外層命令(函數的調用者)來控制的,它們本身無法開始或提交事務。

三、聲明:

    所有在塊里使用的變量都必須在塊的聲明段里先進行聲明,唯一的例外是FOR循環里的循環計數變量,該變量被自動聲明為整型。變量聲明的語法如下:
 

復制代碼 代碼如下:

    variable_name [ CONSTANT ] variable_type [ NOT NULL ] [ { DEFAULT | := } expression ];
 

    1). SQL中的數據類型均可作為PL/pgSQL變量的數據類型,如integer、varchar和char等。
    2). 如果給出了DEFAULT子句,該變量在進入BEGIN塊時將被初始化為該缺省值,否則被初始化為SQL空值。缺省值是在每次進入該塊時進行計算的。因此,如果把now()賦予一個類型為timestamp的變量,那么該變量的缺省值將為函數實際調用時的時間,而不是函數預編譯時的時間。
    3). CONSTANT選項是為了避免該變量在進入BEGIN塊后被重新賦值,以保證該變量為常量。
    4). 如果聲明了NOT NULL,那么賦予NULL數值給該變量將導致一個運行時錯誤。因此所有聲明為NOT NULL的變量也必須在聲明時定義一個非空的缺省值。

    1. 函數參數的別名:
    傳遞給函數的參數都是用$1、$2這樣的標識符來表示的。為了增加可讀性,我們可以為其聲明別名。之后別名和數字標識符均可指向該參數值,見如下示例:
    1). 在函數聲明的同時給出參數變量名。
 

復制代碼 代碼如下:

    CREATE FUNCTION sales_tax(subtotal real) RETURNS real AS $$
    BEGIN
        RETURN subtotal * 0.06;
    END;
    $$ LANGUAGE plpgsql;
 

    2). 在聲明段中為參數變量定義別名。
 
復制代碼 代碼如下:

    CREATE FUNCTION sales_tax(REAL) RETURNS real AS $$
    DECLARE
        subtotal ALIAS FOR $1;
    BEGIN
        RETURN subtotal * 0.06;
    END;
    $$ LANGUAGE plpgsql;
 

    3). 對于輸出參數而言,我們仍然可以遵守1)和2)中的規則。
 
復制代碼 代碼如下:

    CREATE FUNCTION sales_tax(subtotal real, OUT tax real) AS $$
    BEGIN
        tax := subtotal * 0.06;
    END;
    $$ LANGUAGE plpgsql;  
 

    4). 如果PL/pgSQL函數的返回類型為多態類型(anyelement或anyarray),那么函數就會創建一個特殊的參數:$0。我們仍然可以為該變量設置別名。
 
復制代碼 代碼如下:

    CREATE FUNCTION add_three_values(v1 anyelement, v2 anyelement, v3 anyelement)
    RETURNS anyelement AS $$
    DECLARE
        result ALIAS FOR $0;
    BEGIN
        result := v1 + v2 + v3;
        RETURN result;
    END;
    $$ LANGUAGE plpgsql;
   

    2. 拷貝類型:
    見如下形式的變量聲明:
 
復制代碼 代碼如下:

    variable%TYPE
 

    %TYPE表示一個變量或表字段的數據類型,PL/pgSQL允許通過該方式聲明一個變量,其類型等同于variable或表字段的數據類型,見如下示例:
 
復制代碼 代碼如下:

    user_id users.user_id%TYPE;
 

    在上面的例子中,變量user_id的數據類型等同于users表中user_id字段的類型。
    通過使用%TYPE,一旦引用的變量類型今后發生改變,我們也無需修改該變量的類型聲明。最后需要說明的是,我們可以在函數的參數和返回值中使用該方式的類型聲明。

    3. 行類型:
    見如下形式的變量聲明:
 

復制代碼 代碼如下:

    name table_name%ROWTYPE;
    name composite_type_name;
 

    table_name%ROWTYPE表示指定表的行類型,我們在創建一個表的時候,PostgreSQL也會隨之創建出一個與之相應的復合類型,該類型名等同于表名,因此,我們可以通過以上兩種方式來聲明行類型的變量。由此方式聲明的變量,可以保存SELECT返回結果中的一行。如果要訪問變量中的某個域字段,可以使用點表示法,如rowvar.field,但是行類型的變量只能訪問自定義字段,無法訪問系統提供的隱含字段,如OID等。對于函數的參數,我們只能使用復合類型標識變量的數據類型。最后需要說明的是,推薦使用%ROWTYPE的聲明方式,這樣可以具有更好的可移植性,因為在Oracle的PL/SQL中也存在相同的概念,其聲明方式也為%ROWTYPE。見如下示例:
 
復制代碼 代碼如下:

    CREATE FUNCTION merge_fields(t_row table1) RETURNS text AS $$
    DECLARE
        t2_row table2%ROWTYPE;
    BEGIN
        SELECT * INTO t2_row FROM table2 WHERE id = 1 limit 1;
        RETURN t_row.f1 || t2_row.f3 || t_row.f5 || t2_row.f7;
    END;
    $$ LANGUAGE plpgsql;

    4. 記錄類型:
    見如下形式的變量聲明:
 
復制代碼 代碼如下:

    name RECORD;
 

    記錄變量類似于行類型變量,但是它們沒有預定義的結構,只能通過SELECT或FOR命令來獲取實際的行結構,因此記錄變量在被初始化之前無法訪問,否則將引發運行時錯誤。
    注:RECORD不是真正的數據類型,只是一個占位符。

四、基本語句:

    1. 賦值:
    PL/pgSQL中賦值語句的形式為:identIFier := expression,等號兩端的變量和表達式的類型或者一致,或者可以通過PostgreSQL的轉換規則進行轉換,否則將會導致運行時錯誤,見如下示例:
 

復制代碼 代碼如下:

    user_id := 20;
    tax := subtotal * 0.06;
   

    2. SELECT INTO:
    通過該語句可以為記錄變量或行類型變量進行賦值,其表現形式為:SELECT INTO target select_expressions FROM ...,該賦值方式一次只能賦值一個變量。表達式中的target可以表示為是一個記錄變量、行變量,或者是一組用逗號分隔的簡單變量和記錄/行字段的列表。select_expressions以及剩余部分和普通SQL一樣。
    如果將一行或者一個變量列表用做目標,那么選出的數值必需精確匹配目標的結構,否則就會產生運行時錯誤。如果目標是一個記錄變量,那么它自動將自己構造成命令結果列的行類型。如果命令返回零行,目標被賦予空值。如果命令返回多行,那么將只有第一行被賦予目標,其它行將被忽略。在執行SELECT INTO語句之后,可以通過檢查內置變量FOUND來判斷本次賦值是否成功,如:
 
復制代碼 代碼如下:

    SELECT INTO myrec * FROM emp WHERE empname = myname;
    IF NOT FOUND THEN
        RAISE EXCEPTION 'employee % not found', myname;
    END IF;
 

    要測試一個記錄/行結果是否為空,可以使用IS NULL條件進行判斷,但是對于返回多條記錄的情況則無法判斷,如:
 
復制代碼 代碼如下:

    DECLARE
        users_rec RECORD;
    BEGIN
        SELECT INTO users_rec * FROM users WHERE user_id = 3;
        IF users_rec.homepage IS NULL THEN
            RETURN 'http://';
        END IF;
    END;
 

   
    3. 執行一個沒有結果的表達式或者命令:
    在調用一個表達式或執行一個命令時,如果對其返回的結果不感興趣,可以考慮使用PERFORM語句:PERFORM query,該語句將執行PERFORM之后的命令并忽略其返回的結果。其中query的寫法和普通的SQL SELECT命令是一樣的,只是把開頭的關鍵字SELECT替換成PERFORM,如:
 
復制代碼 代碼如下:

    PERFORM create_mv('cs_session_page_requests_mv', my_query);

    4. 執行動態命令:
    如果在PL/pgSQL函數中操作的表或數據類型在每次調用該函數時都可能會發生變化,在這樣的情況下,可以考慮使用PL/pgSQL提供的EXECUTE語句:EXECUTE command-string [ INTO target ],其中command-string是用一段文本表示的表達式,它包含要執行的命令。而target是一個記錄變量、行變量或者一組用逗號分隔的簡單變量和記錄/行域的列表。這里需要特別注意的是,該命令字符串將不會發生任何PL/pgSQL變量代換,變量的數值必需在構造命令字符串時插入到該字符串中。

    和所有其它PL/pgSQL命令不同的是,一個由EXECUTE語句運行的命令在服務器內并不會只prepare和保存一次。相反,該語句在每次運行的時候,命令都會prepare一次。因此命令字符串可以在函數里動態的生成以便于對各種不同的表和字段進行操作,從而提高函數的靈活性。然而由此換來的卻是性能上的折損。見如下示例:
 

復制代碼 代碼如下:

    EXECUTE 'UPDATE tbl SET ' || quote_ident(columnname) || ' = ' || quote_literal(newvalue);

五、控制結構:

    1. 函數返回:

    1). RETURN expression
    該表達式用于終止當前的函數,然后再將expression的值返回給調用者。如果返回簡單類型,那么可以使用任何表達式,同時表達式的類型也將被自動轉換成函數的返回類型,就像我們在賦值中描述的那樣。如果要返回一個復合類型的數值,則必須讓表達式返回記錄或者匹配的行變量。
    2). RETURN NEXT expression
    如果PL/pgSQL函數聲明為返回SETOF sometype,其行記錄是通過RETURN NEXT命令進行填充的,直到執行到不帶參數的RETURN時才表示該函數結束。因此對于RETURN NEXT而言,它實際上并不從函數中返回,只是簡單地把表達式的值保存起來,然后繼續執行PL/pgSQL函數里的下一條語句。隨著RETURN NEXT命令的迭代執行,結果集最終被建立起來。該類函數的調用方式如下:
    SELECT * FROM some_func();
    它被放在FROM子句中作為數據源使用。最后需要指出的是,如果結果集數量很大,那么通過該種方式來構建結果集將會導致極大的性能損失。

    2. 條件:
    在PL/pgSQL中有以下三種形式的條件語句。

    1). IF-THEN
 

復制代碼 代碼如下:

    IF boolean-expression THEN
        statements
    END IF;   
 

    2). IF-THEN-ELSE
 
復制代碼 代碼如下:

    IF boolean-expression THEN
        statements
    ELSE
        statements
    END IF;
 

    3). IF-THEN-ELSIF-ELSE
 
復制代碼 代碼如下:

    IF boolean-expression THEN
        statements
    ELSIF boolean-expression THEN
        statements
    ELSIF boolean-expression THEN
        statements
    ELSE
        statements
    END IF;   
 

    關于條件語句,這里就不在做過多的贅述了。

    3. 循環:
    1). LOOP
 

復制代碼 代碼如下:

    LOOP
        statements
    END LOOP [ label ];
 

    LOOP定義一個無條件的循環,直到由EXIT或者RETURN語句終止??蛇x的label可以由EXIT和CONTINUE語句使用,用于在嵌套循環中聲明應該應用于哪一層循環。
    2). EXIT
 
復制代碼 代碼如下:

    EXIT [ label ] [ WHEN expression ];
 

    如果沒有給出label,就退出最內層的循環,然后執行跟在END LOOP后面的語句。如果給出label,它必須是當前或更高層的嵌套循環塊或語句塊的標簽。之后該命名塊或循環就會終止,而控制則直接轉到對應循環/塊的END語句后面的語句上。
    如果聲明了WHEN,EXIT命令只有在expression為真時才被執行,否則將直接執行EXIT后面的語句。見如下示例:
 
復制代碼 代碼如下:

    LOOP
        -- do something
        EXIT WHEN count > 0;
    END LOOP;
 

    3). CONTINUE
 
復制代碼 代碼如下:

    CONTINUE [ label ] [ WHEN expression ];
 

    如果沒有給出label,CONTINUE就會跳到最內層循環的開始處,重新進行判斷,以決定是否繼續執行循環內的語句。如果指定label,則跳到該label所在的循環開始處。如果聲明了WHEN,CONTINUE命令只有在expression為真時才被執行,否則將直接執行CONTINUE后面的語句。見如下示例:
 
復制代碼 代碼如下:

    LOOP
        -- do something
        EXIT WHEN count > 100;
        CONTINUE WHEN count 50;
    END LOOP;   
 

    4). WHILE
 
復制代碼 代碼如下:

    [ label>> ]
    WHILE expression LOOP
        statements
    END LOOP [ label ];
 

    只要條件表達式為真,其塊內的語句就會被循環執行。條件是在每次進入循環體時進行判斷的。見如下示例:
 
復制代碼 代碼如下:

    WHILE amount_owed > 0 AND gift_certificate_balance > 0 LOOP
        --do something
    END LOOP;
 

    5). FOR
 
復制代碼 代碼如下:

    [ label>> ]
    FOR name IN [ REVERSE ] expression .. expression LOOP
        statements
    END LOOP [ label ];
 

    變量name自動被定義為integer類型,其作用域僅為FOR循環的塊內。表示范圍上下界的兩個表達式只在進入循環時計算一次。每次迭代name值自增1,但如果聲明了REVERSE,name變量在每次迭代中將自減1,見如下示例:
 
復制代碼 代碼如下:

    FOR i IN 1..10 LOOP
        --do something
        RAISE NOTICE 'i IS %', i;
    END LOOP;
   
    FOR i IN REVERSE 10..1 LOOP
        --do something
    END LOOP;   
   

    4. 遍歷命令結果:
 
復制代碼 代碼如下:

    [ label>> ]
    FOR record_or_row IN query LOOP
        statements
    END LOOP [ label ];
 

    這是另外一種形式的FOR循環,在該循環中可以遍歷命令的結果并操作相應的數據,見如下示例:
 
復制代碼 代碼如下:

    FOR rec IN SELECT * FROM some_table LOOP
        PERFORM some_func(rec.one_col);
    END LOOP;
 

    PL/pgSQL還提供了另外一種遍歷命令結果的方式,和上面的方式相比,唯一的差別是該方式將SELECT語句存于字符串文本中,然后再交由EXECUTE命令動態的執行。和前一種方式相比,該方式的靈活性更高,但是效率較低。
 
復制代碼 代碼如下:

    [ label>> ]
    FOR record_or_row IN EXECUTE text_expression LOOP
        statements
    END LOOP [ label ];
   

    5. 異常捕獲:
    在PL/pgSQL函數中,如果沒有異常捕獲,函數會在發生錯誤時直接退出,與其相關的事物也會隨之回滾。我們可以通過使用帶有EXCEPTION子句的BEGIN塊來捕獲異常并使其從中恢復。見如下聲明形式:
 
復制代碼 代碼如下:

    [ label>> ]
    [ DECLARE
        declarations ]
    BEGIN
        statements
    EXCEPTION
        WHEN condition [ OR condition ... ] THEN
            handler_statements
        WHEN condition [ OR condition ... ] THEN
            handler_statements
    END;
 

    如果沒有錯誤發生,只有BEGIN塊中的statements會被正常執行,然而一旦這些語句中有任意一條發生錯誤,其后的語句都將被跳過,直接跳轉到EXCEPTION塊的開始處。此時系統將搜索異常條件列表,尋找匹配該異常的第一個條件,如果找到匹配,則執行相應的handler_statements,之后再執行END的下一條語句。如果沒有找到匹配,該錯誤就會被繼續向外拋出,其結果與沒有EXCEPTION子句完全等同。如果此時handler_statements中的語句發生新錯誤,它將不能被該EXCEPTION子句捕獲,而是繼續向外傳播,交由其外層的EXCEPTION子句捕獲并處理。見如下示例:
 
復制代碼 代碼如下:

    INSERT INTO mytab(firstname, lastname) VALUES('Tom', 'Jones');
    BEGIN
        UPDATE mytab SET firstname = 'Joe' WHERE lastname = 'Jones';
        x := x + 1;
        y := x / 0;
    EXCEPTION
        WHEN division_by_zero THEN
            RAISE NOTICE 'caught division_by_zero';
            RETURN x;
    END;
 

    當以上函數執行到y := x / 0語句時,將會引發一個異常錯誤,代碼將跳轉到EXCEPTION塊的開始處,之后系統會尋找匹配的異常捕捉條件,此時division_by_zero完全匹配,這樣該條件內的代碼將會被繼續執行。需要說明的是,RETURN語句中返回的x值為x := x + 1執行后的新值,但是在除零之前的update語句將會被回滾,BEGIN之前的insert語句將仍然生效。
  
六、游標:

    1. 聲明游標變量:

    在PL/pgSQL中對游標的訪問都是通過游標變量實現的,其數據類型為refcursor。 創建游標變量的方法有以下兩種:

    1). 和聲明其他類型的變量一樣,直接聲明一個游標類型的變量即可。
    2). 使用游標專有的聲明語法,如:
 

復制代碼 代碼如下:

    name CURSOR [ ( arguments ) ] FOR query;
 

    其中arguments為一組逗號分隔的name datatype列表,見如下示例:
 
復制代碼 代碼如下:

    curs1 refcursor;
    curs2 CURSOR FOR SELECT * FROM tenk1;
    curs3 CURSOR (key integer) IS SELECT * FROM tenk1 WHERE unique1 = key;
 

    在上面三個例子中,只有第一個是未綁定游標,剩下兩個游標均已被綁定。

    2. 打開游標:

    游標在使用之前必須先被打開,在PL/pgSQL中有三種形式的OPEN語句,其中兩種用于未綁定的游標變量,另外一種用于綁定的游標變量。

    1). OPEN FOR:

    其聲明形式為:
 

復制代碼 代碼如下:

    OPEN unbound_cursor FOR query;
 

    該形式只能用于未綁定的游標變量,其查詢語句必須是SELECT,或其他返回記錄行的語句,如EXPLAIN。在PostgreSQL中,該查詢和普通的SQL命令平等對待,即先替換變量名,同時也將該查詢的執行計劃緩存起來,以供后用。見如下示例:
 
復制代碼 代碼如下:

    OPEN curs1 FOR SELECT * FROM foo WHERE key = mykey;
 

    2). OPEN FOR EXECUTE
    其聲明形式為:
 
復制代碼 代碼如下:

    OPEN unbound_cursor FOR EXECUTE query-string;  
 

    和上面的形式一樣,該形式也僅適用于未綁定的游標變量。EXECUTE將動態執行其后以文本形式表示的查詢字符串。
 
復制代碼 代碼如下:

    OPEN curs1 FOR EXECUTE 'SELECT * FROM ' || quote_ident($1);
 

    3). 打開一個綁定的游標
    其聲明形式為:
 
復制代碼 代碼如下:

    OPEN bound_cursor [ ( argument_values ) ];  
 

    該形式僅適用于綁定的游標變量,只有當該變量在聲明時包含接收參數,才能以傳遞參數的形式打開該游標,這些參數將被實際代入到游標聲明的查詢語句中,見如下示例:
 
復制代碼 代碼如下:

    OPEN curs2;
    OPEN curs3(42);
 

    3. 使用游標:
    游標一旦打開,就可以按照以下方式進行讀取。然而需要說明的是,游標的打開和讀取必須在同一個事物內,因為在PostgreSQL中,如果事物結束,事物內打開的游標將會被隱含的關閉。

    1). FETCH
    其聲明形式為:
 

復制代碼 代碼如下:

    FETCH cursor INTO target;
 

    FETCH命令從游標中讀取下一行記錄的數據到目標中,其中目標可以是行變量、記錄變量,或者是一組逗號分隔的普通變量的列表,讀取成功與否,可通過PL/pgSQL內置變量FOUND來判斷,其規則等同于SELECT INTO。見如下示例:
 
復制代碼 代碼如下:

    FETCH curs1 INTO rowvar;  --rowvar為行變量
    FETCH curs2 INTO foo, bar, baz;
 

    2). CLOSE
    其聲明形式為:
 
復制代碼 代碼如下:

    CLOSE cursor;
 

    關閉當前已經打開的游標,以釋放其占有的系統資源,見如下示例:
 
復制代碼 代碼如下:

    CLOSE curs1;
 

七、錯誤和消息:

    在PostgreSQL中可以利用RAISE語句報告信息和拋出錯誤,其聲明形式為:
 

復制代碼 代碼如下:

    RAISE level 'format' [, expression [, ...]];
 

    這里包含的級別有DEBUG(向服務器日志寫信息)、LOG(向服務器日志寫信息,優先級更高)、INFO、NOTICE和WARNING(把信息寫到服務器日志以及轉發到客戶端應用,優先級逐步升高)和EXCEPTION拋出一個錯誤(通常退出當前事務)。某個優先級別的信息是報告給客戶端還是寫到服務器日志,還是兩個均有,是由log_min_messages和client_min_messages這兩個系統初始化參數控制的。
    在format部分中,%表示為占位符,其實際值僅在RAISE命令執行時由后面的變量替換,如果要在format中表示%自身,可以使用%%的形式表示,見如下示例:
 
復制代碼 代碼如下:

    RAISE NOTICE 'Calling cs_create_job(%)',v_job_id;  --v_job_id變量的值將替換format中的%。
    RAISE EXCEPTION 'Inexistent ID --> %',user_id;  
 

   

您可能感興趣的文章:
  • pgsql查詢優化之模糊查詢實例詳解
  • C#使用EF連接PGSql數據庫的完整步驟
  • 簡單的pgsql pdo php操作類實現代碼
  • MySQL鎖阻塞的深入分析
  • mysql查看死鎖與去除死鎖示例詳解
  • Mysql查看死鎖與解除死鎖的深入講解
  • mysql插入前判斷數據是否存在的操作
  • PgSQl臨時表創建及應用實例解析

標簽:來賓 烏海 衡陽 晉城 蚌埠 株洲 珠海 錦州

巨人網絡通訊聲明:本文標題《PostgreSQL教程(二十):PL/pgSQL過程語言》,本文關鍵詞  PostgreSQL,教程,二十,pgSQL,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PostgreSQL教程(二十):PL/pgSQL過程語言》相關的同類信息!
  • 本頁收集關于PostgreSQL教程(二十):PL/pgSQL過程語言的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 广州普耐柯数控机械有限公司| 江苏源德机械有限公司| 浙江富龙钢铁有限公司| 河南博众机械制造有限公司| 首唐宝生钢铁有限公司| 山东隆盛钢铁有限公司| 江苏正兴建设机械有限公司| 杭州华驰机械有限公司| 石家庄三一众力工程机械有限公司 | 江苏奥马机械有限公司| 上海鑫斌机械有限公司| 苏州宇钻机械有限公司| 平煤机械设备有限公司| 新昌县机械有限公司| 唐山松汀钢铁有限公司| 潍坊威尔顿机械设备有限公司| 山东山鼎工程机械有限公司| 上海红重机械装备有限公司| 江阴新迪机械有限公司| 杭州诺迈机械有限公司| 青岛德固特机械制造有限公司| 机械有限公司 英文| 河北太行机械工业有限公司 | 合肥金锡机械有限公司| 江阴荣兴机械有限公司| 长春协展机械工业有限公司| 久海机械制造有限公司| 广州机械制造有限公司| 江苏食品机械有限公司| 濮阳机械制造有限公司| 福州机械制造有限公司| 昆明机械制造有限公司| 广州机械有限公司 v| 南京金城机械有限公司| 福建烟草机械有限公司| 唐山鑫杭钢铁有限公司| 佛山市松川机械设备有限公司| 东泰机械制造有限公司| 木工机械设备有限公司| 东莞正扬电子机械有限公司怎么样 | 成都富江机械制造有限公司| 昆山海进机械有限公司| 合肥二宫机械有限公司| 邯郸纺织机械有限公司| 工程机械租赁有限公司| 宣城 机械有限公司| 威斯特机械有限公司| 重的机械有限公司招聘| 常德 机械有限公司| 苏州升降机械有限公司| 蚌埠 机械有限公司| 重庆庆达机械有限公司| 诸城市机械有限公司| 安徽玻璃机械有限公司| 东莞市得士威机械工业有限公司| 潍坊 机械 有限公司| 临广电气机械有限公司| 上海科熙起重设备有限公司| 范县中鑫钢铁有限公司| 深圳新劲力机械有限公司| 荣嘉精密机械有限公司| 中科包装机械有限公司| 江阴中南重工有限公司| 德州市启泰机械设备有限公司 | 浙江勇力机械有限公司| 上海二和机械有限公司| 申光洗涤机械有限公司| 上海工程机械有限公司| 濮阳市名利石化机械设备制造有限公司 | 山东卡特重工有限公司| 江苏昆仲机械有限公司| 河南一重起重机有限公司| 浙江华昌液压机械有限公司 | 杭州恒机械有限公司| 厦门机械设备有限公司| 郑州华宏机械设备有限公司| 华菱涟源钢铁有限公司| 上海瑞派机械有限公司| 德国机械制造有限公司| 昆山乙盛机械工业有限公司电话| 山东三维重工有限公司| 沈阳六和机械有限公司| 马鞍山 机械制造有限公司| 焦作市虹起制动器有限公司| 广东顺发起重设备有限公司| 江苏三麦食品机械有限公司| 盘锦 机械有限公司| 莱州神工机械有限公司| 潍坊圣旋机械有限公司| 爱克苏州机械有限公司| 安钢闽源钢铁有限公司| 广西美鹏机械设备有限公司| 扬州海沃机械有限公司| 陕西机械设备有限公司| 浙江亿森机械有限公司| 上海宝峨机械有限公司| 厦门机械制造有限公司| 郑州东方重型机械有限公司| 金源机械制造有限公司| 珠海市机械有限公司| 太仓越华精密机械配件有限公司 | 河南矿山机械有限公司| 北京包装机械有限公司| 烟台飞达机械设备有限公司| 上海嘉峥机械有限公司| 威海盛世机械有限公司| 山东嘉意机械有限公司| 广东食品机械有限公司| 德耐尔压缩机械有限公司| 山东大启机械有限公司| 济南包装机械械有限公司| 永川海通机械有限公司| 凹凸精密机械有限公司| 工程机械设备有限公司| 陀曼精密机械有限公司| 曲阜机械制造有限公司| 佛山市创利宝包装机械有限公司| 湖南卓迪机械有限公司| 台州宏汇机械有限公司| 苏州鸿本机械制造有限公司| 山矿机械设备有限公司| 石家庄聚力特机械有限公司 | 济宁矿山机械有限公司| 温州印刷机械有限公司| 上海塑帝机械有限公司| 中信重工开诚智能装备有限公司| 常州市昊博机械有限公司| 上海豪德机械有限公司| 绵阳新晨动力机械有限公司招聘| 湖北大展钢铁有限公司| 佛山市强源钢铁有限公司| 衡阳华意机械有限公司| 梁山机械制造有限公司| 莱州市华弘机械有限公司| 上海舜诺机械有限公司| 荆州祥达机械制造有限公司| 镇江机械设备有限公司| 唐山榕丰钢铁有限公司| 长沙市机械有限公司| 杭州联德机械有限公司| 天津聚鑫贵泽钢铁贸易有限公司| 四川望锦机械有限公司| 上海江埔印刷机械有限公司| 固达机械制造有限公司| 山东祥远机械有限公司| 青岛机械设备有限公司| 诚辉机械制造有限公司| 重庆旺耕机械有限公司| 沈阳德恒机械制造有限公司| 山东博精化工机械有限公司| 成都 食品机械有限公司| 保定东利机械制造有限公司 | 山东三牛机械有限公司| 济宁朝阳机械有限公司| 南京瑞亚挤出机械制造有限公司| 深圳格瑞克机械有限公司| 瑞安瑞泰机械有限公司| 浙江荣德机械有限公司| 华东油压机械制造有限公司| 陕西机械设备有限公司| 安徽普源分离机械制造有限公司| 浙江弘润机械制造有限公司| 东阳市佳先机械制造有限公司| 广州市力进食品机械有限公司| 浙江嘉元机械制造有限公司| 瑞安瑞泰机械有限公司| 浙江盾安机械有限公司| 重庆德运机械制造有限公司| 博山 机械有限公司| 新疆昆玉钢铁有限公司| 沃德精密机械有限公司| 青岛山森机械有限公司| 江苏联鑫钢铁有限公司| 天津敏信机械有限公司| 东莞市天成机械有限公司| 大连行健数控机械技术有限公司| 派克包装机械有限公司| 兴世机械制造有限公司| 诸城市富瑞德机械有限公司| 上海 精密机械制造有限公司| 曲靖呈钢铁有限公司| 盐城市鑫益达精密机械有限公司| 沈阳顺达重矿机械制造有限公司| 南京斯坦福机械有限公司| 大连正丰机械有限公司| 常州市丰丰机械有限公司| 诸城市日通机械有限公司| 深圳市兴合发齿轮机械有限公司| 石家庄安瑞科气体机械有限公司| 重庆巨泰机械有限公司| 天津泰威机械有限公司| 沈阳 机械设备有限公司| 宁波天瑞精工机械有限公司| 杭州速能机械有限公司| 沃洲机械制造有限公司| 济南北斗星机械设备有限公司| 重庆渝辉机械有限公司| 玉环锐利机械有限公司| 山西太行钢铁有限公司| 南通天成机械有限公司| 洛阳市机械有限公司| 斗山工程机械有限公司| 烟台华隆机械有限公司| 郑州江科重工机械有限公司| 江苏宏威重工机床制造有限公司 | 广东海天机械有限公司| 江阴市江顺机械有限公司| 湖南华菱钢铁有限公司| 兰溪永丰机械有限公司| 法麦凯尼柯机械有限公司| 青州三和机械有限公司| 江苏润明机械设备有限公司怎么样 | 成都工程机械有限公司| 湛江恒润机械有限公司| 诸城市美川机械有限公司| 浙江东雄重工有限公司| 广州起航贸易有限公司| 昌信机械制造有限公司| 永康市机械有限公司| 苏州德扬数控机械有限公司| 河北航天振邦精密机械有限公司| 山东峻峰起重机械有限公司| 西安工程机械有限公司| 浙江环兴机械有限公司| 武汉中轻机械有限公司| 河南华北起重吊钩有限公司| 山东华雄机械有限公司| 东莞市顺翼机械有限公司| 鹤壁万丰矿山机械制造有限公司| 上海依澳包装机械有限公司| 张家港市机械制造有限公司| 乐清市机械有限公司| 纸箱机械制造有限公司| 宁波中机械有限公司| 泰兴石油机械有限公司| 烟台天成机械有限公司| 无锡兆立精密机械有限公司 | 徐州二川机械有限公司| 杭州起重吊装有限公司| 新乡高服机械有限公司| 佛山市宝陶机械设备有限公司| 广州海缔机械有限公司| 溧阳布勒机械有限公司| 福州优利机械有限公司| 大连日立机械设备有限公司| 南通科邦机械有限公司| 玉环万全机械有限公司| 常州市新武机械有限公司| 深圳市康铖机械设备有限公司| 成都 机械 有限公司| 承德 机械有限公司| 河南东起机械有限公司| 青岛力克川液压机械有限公司| 上海光塑机械制造有限公司 | 宁波塑料机械制造有限公司| 伟业机械制造有限公司| 机械化工工程有限公司| 福州 机械 有限公司| 枣庄誉源挂车机械有限公司| 洛阳中收机械装备有限公司招聘| 浙江嘉元机械制造有限公司| 广州常富机械有限公司| 三一众力机械有限公司| 潍坊华星机械有限公司| 济南森华精密机械有限公司 | 上海卓越机械有限公司| 浙江晨雕机械有限公司| 青岛沃隆花生机械有限公司| 江苏苏东机械有限公司| 上海德采包装机械有限公司| 佛山市科鹰机械有限公司| 东莞市新望包装机械有限公司| 南京凯驰机械有限公司| 厦门群鑫机械工业有限公司| 潍坊裕川机械有限公司| 潍坊 机械 有限公司| 烟台山一机械有限公司| 淄博中升机械有限公司| 南京恒昌包装机械有限公司| 合肥起重机械有限公司| 济南恒铭钢铁有限公司| 江苏江南起重机械有限公司| 浙江蓝宝机械有限公司| 上海敏硕机械配件有限公司| 常州安捷起重吊装有限公司| 福建海龙机械有限公司| 杭州科豪机械有限公司| 浙江瑞安机械有限公司| 丰润区钢铁有限公司| 无锡市川中五金机械有限公司| 艾沃意特机械设备制造有限公司| 京西重工上海有限公司| 新疆机械设备有限公司| 重庆恒科机械制造有限公司| 河南豪丰机械制造有限公司| 浙江金华机械有限公司| 广州汉牛机械设备有限公司| 保东农业机械有限公司| 浙江纺织机械有限公司| 上海博储机械工业有限公司| 上海东蒙路桥机械有限公司 | 迁安九江钢铁有限公司| 江苏石油机械有限公司| 曲阜兴运输送机械设备有限公司| 上海力克机械有限公司| 昆山 机械有限公司| 旭恒精工机械制造有限公司| 深圳市高郭氏精密机械有限公司 | 苏州联屹精密机械有限公司| 浙江海工机械有限公司| 上海德元机械设备有限公司| 机械加工 有限公司| 山东嘉和机械有限公司| 河南瑞峰机械有限公司| 临清市机械有限公司| 山东宝星机械有限公司| 阳煤化机械有限公司| 山东 纺织机械 有限公司| 东莞大同机械有限公司| 威海隆发机械有限公司| 东莞市雅康精密机械有限公司 | 江阴市博越机械有限公司| 珠海仕高玛机械设备有限公司| 天津泰威机械有限公司| 重庆 机械有限公司| 河南机械设备有限公司| 浙江矿山机械有限公司| 山东讴神机械制造有限公司 | 山东泗水泰峰面粉机械有限公司| 宝力机械有限公司招聘| 德阳 机械有限公司| 上海佳力士机械有限公司| 上海造纸机械有限公司| 苏州德派机械有限公司| 浙江起重机械有限公司| 中核机械天津有限公司| 苏州仁成包装机械有限公司| 菲美得机械有限公司| 杭州鸿机械有限公司| 启益电器机械有限公司| 常州英来机械有限公司| 苏州博杰思达机械有限公司| 山东欣弘发机械有限公司| 苏州久富农业机械有限公司| 宁波凯特机械有限公司| 上海凌鹰机械有限公司| 常州市日中精密机械有限公司| 深圳市塑胶机械有限公司| 江苏新瑞机械有限公司| 辽阳腾龙钢铁有限公司| 河北中伟机械有限公司| 山东 食品机械 有限公司| 上海龙工机械有限公司| 冈热机械常州有限公司| 常林道依茨法尔机械有限公司| 苏州海盛精密机械有限公司怎么样| 无锡锡南机械有限公司| 苏州柯瑞机械有限公司| 山西万泽锦达机械制造有限公司 | 派菲奥机械有限公司| 杭州 机械设备有限公司| 山东国丰机械有限公司| 青岛万邦包装机械有限公司| 高义钢铁有限公司电话| 成都弘林机械有限公司| 重庆纵横机械有限公司| 圣博液压机械有限公司| 杭州友高精密机械有限公司| 上海天勇机械设备有限公司| 金沙机械制造有限公司| 机械进出口有限公司| 山东建筑机械有限公司| 三门峡化工机械有限公司| 青岛塑料机械有限公司| 平湖英厚机械有限公司| 浙江三叶机械有限公司| 上海善能机械有限公司| 浙江安驰机械有限公司| 武汉九州龙工程机械有限公司 | 江苏金荣机械有限公司| 江苏梅花机械有限公司| 上海京悦机械有限公司| 单县江华机械有限公司| 厦门洪海机械有限公司| 郑州正科机械有限公司| 宁波星源机械有限公司| 无锡宝露重工有限公司| 沈阳鸿本机械有限公司| 贵阳长乐钢铁有限公司| 众旭食品机械有限公司| 华盛机械设备有限公司| 苏州金韦尔机械有限公司| 河北清大环保机械有限公司| 广州永胜钢铁制品有限公司| 卓郎纺织机械有限公司| 深圳市丹耐斯机械有限公司| 重庆机械制造有限公司| 天津宏大纺织机械有限公司| 济南泽机械有限公司| 重型工程机械有限公司| 江阴市机械设备有限公司| 上海振华重工有限公司| 安徽艾特巴机械制造有限公司 | 巩义市人和机械有限公司| 佛山顺德区机械有限公司| 广州市广花包装机械有限公司| 溧阳市机械有限公司| 大连正丰机械有限公司| 安徽省中冶重工机械有限公司| 巩义市瑞赛克机械设备有限公司| 佛山市松可包装机械有限公司 | 重庆机械制造有限公司| 山东永锋钢铁有限公司| 广东重工建设监理有限公司| 苏州 机械有限公司| 南京重霸起重设备有限公司| 东莞市益彩机械有限公司| 雄克精密机械有限公司| 化工有限公司起名大全| 浙江青山钢铁有限公司| 潍坊机械制造有限公司| 广州宏兴食品机械有限公司| 万金机械配件有限公司| 唐山鑫达钢铁有限公司| 腾达机械设备有限公司| 温州市鹿城江心服装机械有限公司 | 重庆捷庆机械有限公司| 莱州 机械有限公司| 辽宁中原机械有限公司| 广州伟基机械有限公司| 浙江兴盛机械有限公司| 重庆精密机械有限公司| 常州市锦益机械有限公司| 重庆蓝黛动力传动机械有限公司| 东莞元渝机械有限公司| 嘉兴市宏丰机械有限公司| 恒兴机械设备有限公司| 苏州盛友机械有限公司| 潍坊浩泰机械有限公司| 国研机械设备有限公司| 浙江劲豹机械有限公司| 广州机械有限公司 v| 重庆志成机械有限公司| 阜阳 机械 有限公司| 无锡工程机械有限公司| 北京道森起点信息技术有限公司 | 宝鸡忠诚制药机械有限公司| 成都康博机械有限公司| 江苏博森机械制造有限公司 | 同安木工机械有限公司| 南京登峰起重设备制造有限公司 | 广东华冠钢铁有限公司| 台州精密机械有限公司| 上海尼法机械有限公司| 重庆捷庆机械有限公司| 赛柏精密机械有限公司| 云南中拓钢铁有限公司| 温州市兴业机械设备有限公司| 浙江晟达机械有限公司| 恒源机械制造有限公司| 苏州动力机械有限公司| 江苏祥达机械制造有限公司| 厦门东亚机械有限公司| 合肥起重机械有限公司| 湖北江汉重工有限公司| 山东隆盛钢铁有限公司| 工程的机械设备有限公司| 东莞市金拓机械有限公司| 新乐华宝塑料机械有限公司| 湖南一田农业机械有限公司| 上海陆达包装机械制造有限公司| 大连孚德机械有限公司| 澳太机械制造有限公司| 佛山市科机械有限公司| 抚顺石油机械有限公司| 上海轶鹰起重机械有限公司| 西安鸿运机械有限公司| 恒昌机械制造有限公司| 芜湖良仕机械有限公司| 杭州华兴机械有限公司| 诺威起重设备苏州有限公司| 杭州武林机械有限公司| 德州 机械有限公司| 潍坊圣旋机械有限公司| 济宁机械制造有限公司| 浙江吉隆机械有限公司| 太仓精密机械有限公司| 大连军峰机械有限公司| 青岛唐宇机械制造有限公司| 泸州发展机械有限公司| 江阴宏达机械有限公司| 华盛机械设备有限公司| 泉州市劲力工程机械有限公司| 杭州德工机械有限公司| 济宁朝阳机械有限公司| 安徽普源分离机械制造有限公司| 上海普顺机械电器制造有限公司| 海沃机械扬州有限公司| 洛阳塑电机械有限公司| 上海电工机械有限公司| 浙江海重重工有限公司| 东莞市欧西曼机械设备有限公司| 广东南桂起重机械有限公司| 沧州怡和机械有限公司| 大连 机械制造 有限公司| 宝鸡万工机械制造有限公司| 山东闽源钢铁有限公司| 扬州冶金机械有限公司| 苏州联又机械有限公司| 江苏方邦机械有限公司| 群鑫机械有限公司电话| 广州乾能机械制造有限公司| 常州先电机械有限公司| 长沙市机械有限公司| 马钢合肥钢铁有限公司| 兰州炊事机械有限公司| 南丰 机械有限公司| 鸿达机械制造有限公司| 福建联丰机械有限公司| 郑州宇机械有限公司| 南通明诺机械有限公司| 遵化建龙钢铁有限公司| 成都包装机械有限公司| 中船重工环境工程有限公司| 青岛弗林斯曼机械制造有限公司| 南京海威机械有限公司| 河南真牛起重机有限公司| 广州坚诺机械设备有限公司| 广东仕诚塑料机械有限公司 | 宁波瑞铭机械有限公司| 上海御流包装机械有限公司 | 宁波昌扬机械工业有限公司| 广东光信机械有限公司| 新疆 机械有限公司| 济宁华珠机械有限公司| 玉环县机械有限公司| 浙江海重重工有限公司| 北京食之秀机械设备有限公司 | 辽宁中冶石化机械有限公司| 河北天择重型机械有限公司| 南通新兴机械制造有限公司| 山东动力机械有限公司| 舟山荣德机械有限公司| 金华机械 有限公司| 东莞机械设备制造有限公司| 湖南长河机械有限公司| 物理农林机械有限公司| 海顺机械台州有限公司| 浙江天鸿传动机械有限公司| 上海昱庄机械有限公司| 东莞市台铭数控机械有限公司| 河南矿山起重机有限公司地址| 山东岳工机械有限公司| 青岛北船重工有限公司| 福州四兴机械有限公司| 潍坊瑞发机械有限公司| 宁波市鸿博机械制造有限公司| 杭州大禹机械有限公司| 众立机械制造有限公司| 温州联腾包装机械有限公司| 广州新浪爱拓化工机械有限公司| 青岛木工机械有限公司| 邯郸包装机械有限公司| 鸿源机械制造有限公司| 无锡奥野机械有限公司| 林氏玻璃机械有限公司| 中核华兴机械化工程有限公司| 江苏宏威重工机床制造有限公司 | 安徽华机械有限公司| 江苏骏马压路机械有限公司| 潍坊华星机械有限公司| 友池精密机械有限公司| 苏州市大华精密机械有限公司| 苏州华致鑫精密机械有限公司| 上海中机械有限公司| 东莞市精密机械制造有限公司| 河北曙光机械有限公司| 浙江立洋机械有限公司| 临沂铸信机械有限公司| 青岛佳友包装机械有限公司| 洛阳高峰工程机械有限公司| 东莞高臻机械设备有限公司| 南通庞源机械工程有限公司| 扬州文轩钢铁有限公司| 浙江隆信机械制造有限公司| 山东荣利中石油机械有限公司| 海的动力机械有限公司| 重庆市机械有限公司| 东营市机械有限公司| 张家港港龙机械有限公司| 宝钢湛江钢铁有限公司| 环保机械制造有限公司| 济南蓝象数控机械有限公司| 徐州圣邦机械有限公司| 湖北江华机械有限公司| 恒天九五重工有限公司| 上海起帆电线电缆有限公司| 博路威机械江苏有限公司| 江苏如石机械有限公司| 重庆渝辉机械有限公司| 机械设备租赁有限公司| 江苏大津重工有限公司| 普瑞特机械有限公司| 徐工工程机械有限公司| 深圳印刷机械深圳有限公司| 佛山市科机械有限公司| 厦门机械设备有限公司| 机械租赁有限公司名字| 温州杰福机械设备有限公司| 上海山美重型矿山机械有限公司| 上海龙应机械制造有限公司 | 德州宝鼎液压机械有限公司| 河南昌申钢铁有限公司| 宁波住重机械有限公司| 吴江聚力机械有限公司| 广州机械设备有限公司| 河南森源重工有限公司| 武安市裕华钢铁有限公司| 石家庄食品机械有限公司| 济南 重工有限公司| 深圳市精密机械有限公司| 焦作泰鑫机械有限公司| 青岛安成食品机械有限公司 | 富世华机械有限公司| 江阴化工机械有限公司| 飞扬机械制造有限公司| 济南博威液压机械有限公司| 江苏鸡煤机械有限公司| 四川欧曼机械有限公司| 江苏迪迈机械有限公司| 广东力源液压机械有限公司| 重型机械设备有限公司| 捷泰克机械有限公司| 慈溪科傲机械有限公司| 广东森人机械有限公司| 昆山美和机械有限公司| 四川蓝星机械有限公司| 南安市机械有限公司| 济南大彤机械设备有限公司| 凯岛起重机械有限公司| 湖北天和机械有限公司| 河北永洋钢铁有限公司| 青岛农业机械有限公司| 重庆钢实机械有限公司| 溧阳科华机械制造有限公司| 江苏甲钢钢铁有限公司| 威海石岛重工有限公司| 福建机械制造有限公司| 重庆海迅机械制造有限公司| 温岭联星机械有限公司| 湖南卓迪机械有限公司| 昆明 机械制造 有限公司| 北京余特包装机械有限公司| 翼虎动力机械有限公司| 河南起重机有限公司| 农业机械有限公司招聘| 温州华印机械有限公司| 济南中唐机械设备有限公司| 华天机械制造有限公司| 三一海洋重工有限公司| 温州市鹿城江心服装机械有限公司| 济南恒迪机械有限公司| 昌利机械制造有限公司| 宝鸡石油机械有限公司| 海门亿峰机械有限公司| 无锡祥靖机械有限公司| 上海建设路桥机械设备有限公司 | 广州工程机械有限公司| 湖南润通机械制造有限公司| 单县江华机械有限公司| 景德镇 机械有限公司| 镇江宏泰钢铁有限公司| 山西天祥机械有限公司| 安阳锻压机械工业有限公司| 长春协展机械工业有限公司| 上海毅锴机械有限公司| 福建晋工机械有限公司| 济南新思路机械设备有限公司| 新马木工机械有限公司| 金瑞机械制造有限公司| 诸城盛和机械有限公司| 福建铁拓机械有限公司| 丰精密机械有限公司| 江苏江南起重机械有限公司| 上海远跃制药机械有限公司| 成都成邦探矿机械设备有限公司| 宁波安德机械有限公司| 山东机械铸造有限公司| 湖北昌胜机械设备制造有限公司| 杭州重型机械有限公司| 诺威起重设备苏州有限公司| 东方传动机械有限公司| 台湾精密机械有限公司| 绍兴越发机械有限公司| 浙江宇丰机械有限公司| 济南市恒宇机械有限公司| 扬州恒润钢铁有限公司| 常州华威起重工具有限公司| 天津德尚机械有限公司| 无锡塑机械有限公司| 昆山贝奇精密机械有限公司 | 江苏国瑞液压机械有限公司| 上海皆力机械设备有限公司| 机械自动化设备有限公司| 五谷酿机械有限公司| 安来动力机械有限公司| 昆山日晟机械有限公司| 沈阳水泥机械有限公司| 贵州华泰机械设备租赁有限公司| 山东大丰机械有限公司| 靖江 机械有限公司| 嘉兴扬鑫机械有限公司| 衢州 机械有限公司| 石家庄聚力特机械有限公司 | 浙江勇力机械有限公司| 广州市 工程机械有限公司| 昆山尚亦精密机械有限公司| 宁波塑料机械制造有限公司| 劲源机械设备有限公司| 挤出机械 有限公司| 昆明群泰机械有限公司| 宣城市 机械 有限公司| 河北钢铁矿业有限公司| 汕头市机械有限公司| 柳州起重机器有限公司| 瑞安市天晟包装机械有限公司| 河北燕山钢铁有限公司| 南京福能机械设备有限公司| 宁波海雄塑料机械有限公司| 山东博杰重型工程机械有限公司| 江苏中贵重工有限公司| 大阳通用机械有限公司| 南京 机械设备 有限公司| 南通明诺机械有限公司| 常州泽威输送机械有限公司| 山东翔工机械有限公司| 青岛美克精密机械有限公司| 常州 机械制造有限公司| 四川望锦机械有限公司| 咸阳恒佳机械有限公司| 安徽食品机械有限公司| 浙江超伟机械有限公司| 鞍山宝得钢铁有限公司招聘岗位| 邢台机械轧辊有限公司| 浙江超洋机械有限公司| 广州新浪爱拓化工机械有限公司 | 富华重工有限公司老板| 江苏坤泰机械有限公司| 河南三兄重工有限公司| 泉州市机械有限公司| 上海重型机械有限公司| 佛山丰堡精密机械有限公司| 长沙机械与制造有限公司| 昆山之富士机械制造有限公司| 诸城海宝环保机械有限公司| 比富机械(东莞)有限公司| 自动化机械有限公司| 苏州百勤精密机械有限公司| 河北敬业钢铁有限公司地址| 山东铭德机械有限公司| 江苏甲钢钢铁有限公司| 诸城市鼎康机械有限公司| 重庆机械设备有限公司| 福建新源重工有限公司| 武安裕华钢铁有限公司| 江苏泰美环保机械有限公司| 廊坊机械设备有限公司| 涿州北方重工设备设计有限公司| 上海宾迪机械设备有限公司| 四川开拓建筑机械租赁有限公司| 昆山市机械制造有限公司| 徐州东亚钢铁有限公司| 安宁永昌钢铁有限公司| 上海宇减传动机械有限公司 | 江阴市豪亚机械制造有限公司| 杭州精工机械有限公司| 上海全驰机械有限公司| 东莞市通盛机械有限公司| 河南天力起重机械有限公司 | 柳州市机械有限公司| 浙江冠林机械有限公司| 浙江上易机械有限公司| 东莞港重机械有限公司| 北京余特包装机械有限公司| 山东省机械有限公司| 登福机械(上海)有限公司| 上海陆达包装机械制造有限公司| 安徽华邦机械有限公司| 温州华珍机械有限公司| 珠海康信精密机械有限公司| 河北东方德源机械制造有限公司 | 厦门珀挺机械有限公司| 合肥金锡机械有限公司| 长江液压机械有限公司| 常州市 机械设备有限公司| 唐山港陆钢铁有限公司| 沈阳带锯机械有限公司| 贵阳长乐钢铁有限公司| 唐山亚捷机械有限公司| 新乡高服机械有限公司| 固安嘉峰机械有限公司| 宣城市建林机械有限公司| 泰瑞机械有限公司待遇| 连云港 机械有限公司| 吴江精密机械有限公司| 沈阳三重机械有限公司| 道依茨法尔机械有限公司| 昆山胜代机械有限公司| 杭州瑞东机械有限公司| 江苏同力机械有限公司| 昆山翔固机械有限公司| 小松山推工程机械有限公司| 石家庄机械制造有限公司| 山东英胜机械有限公司| 上海昱音机械有限公司| 乙盛机械工业有限公司| 山东愚公工程机械有限公司| 昆山乙盛机械工业有限公司电话| 山西翔天钢铁有限公司| 合肥 机械有限公司| 九江萍钢钢铁有限公司| 财益机械工业有限公司| 上海胜松机械制造有限公司| 石家庄米兹机械设备有限公司| 上海 鑫机械设备有限公司| 装饰工程有限公司起名| 重型工程机械有限公司| 哈尔滨工程机械有限公司| 郑州重型机械有限公司| 常州 机械 有限公司| 苏州金韦尔机械有限公司| 湖北银轮机械有限公司| 浙江欧迈特减速机械有限公司| 河南机械设备有限公司| 天津机械设备有限公司| 唐山燕山钢铁有限公司| 泰恒机械制造有限公司| 建湖液压机械有限公司| 威海 机械有限公司| 常州起重机械有限公司| 武汉苏源机械设备租赁有限公司| 上海金恒机械制造有限公司| 苏州三维精密机械有限公司| 东莞市华森重工有限公司| 营口京华钢铁有限公司招聘| 苏州敏喆机械有限公司| 山东联邦重工有限公司| 山西新泰钢铁有限公司| 山东通用机械有限公司| 浙江鑫 机械有限公司| 南京 机械有限公司| 鹤壁万丰矿山机械制造有限公司 | 苏州泰福特机械有限公司| 武汉东尔机械有限公司| 长沙中京机械有限公司| 郑州世纪精信机械制造有限公司 | 山东龙腾机械有限公司| 农业机械有限公司招聘| 上海液压机械有限公司| 南京彩途机械设备有限公司| 深圳市创能机械有限公司| 徐州华冶机械有限公司| 安阳永兴钢铁有限公司| 山西美锦钢铁有限公司| 嘉兴 机械有限公司| 成都兴业邦达重工机械有限公司| 东平开元机械有限公司| 上海诚淘机械有限公司| 大连世达重工有限公司| 东莞发机械有限公司| 西安金力特机械设备有限公司| 志高机械有限公司官网| 山推楚天工程机械有限公司| 淮南凯盛重工有限公司| 江苏巨能机械有限公司| 重庆钢实机械有限公司| 福建三嘉钢铁有限公司| 烟台华隆机械有限公司| 鞍山宝得钢铁有限公司| 青岛悦工机械有限公司| 常州常林机械有限公司| 辛集市澳森钢铁有限公司| 南京创力传动机械有限公司| 武汉钢铁有限公司疫情| 上海华襄机械有限公司| 上海机械施工有限公司| 青州包装机械有限公司| 湖南汇一制药机械有限公司| 山东福临机械制造有限公司| 北京加隆工程机械有限公司| 浙江塑机械有限公司| 南京三友机械有限公司| 大洋食品机械有限公司| 上海造纸机械有限公司| 重庆恒科机械制造有限公司| 宝钢湛江钢铁有限公司招聘| 三鑫重工机械有限公司| 江阴市豪亚机械制造有限公司| 无锡全盛安仁机械有限公司| 淮南凯盛重工有限公司| 溧阳机械制造有限公司| 上海余特包装机械制造有限公司| 宁波联成机械有限公司| 成都液压机械有限公司| 杭州容瑞机械技术有限公司| 浙江荣升机械有限公司| 精密机械配件有限公司| 佛山市海裕机械有限公司| 南方路面机械有限公司| 瑞安市机械有限公司| 济南精美机械设备有限公司| 湖南卓迪机械有限公司| 无锡旭英机械有限公司| 振华真空机械有限公司| 天津国际机械有限公司| 河南省力神机械有限公司| 潍坊大众机械有限公司| 厦门精密机械有限公司| 玛顿重工太仓有限公司| 招远华丰机械设备有限公司| 南京重霸起重设备有限公司| 浙江华塑机械有限公司| 苏州五金机械有限公司| 重庆明鑫机械有限公司| 广东中泽重工有限公司| 淮安天宇机械有限公司| 上海百劲机械有限公司| 佛山市三良机械设备有限公司| 苏州宁兴精密机械有限公司| 在天精密机械有限公司| 诸城市华钢机械有限公司| 浙江宇丰机械有限公司| 成都兴业邦达重工机械有限公司| 常州豪凯机械有限公司| 中铁重工有限公司武汉| 日照瑞荣机械有限公司| 长春 机械 有限公司| 新华机械制造有限公司| 瑞安 包装机械有限公司| 南阳鼎鑫钢铁有限公司| 唐山鑫鑫钢铁有限公司| 涞源奥宇钢铁有限公司| 凯达机械制造有限公司| 苏州海盛精密机械有限公司| 首都航天机械有限公司| 杭州中力机械设备有限公司| 慈溪机械设备有限公司| 苏州松发机械有限公司| 广州市 包装机械有限公司| 广州汉达机械有限公司| 烟台 机械设备有限公司| 无锡威马机械有限公司| 徐州普特工程机械有限公司| 新晨动力机械有限公司| 标准缝纫机菀坪机械有限公司| 青岛欧普机械设备有限公司| 迁安荣信钢铁有限公司| 科尼起重机设备(上海)有限公司| 佛山市优霸机械设备有限公司| 山东银鹰炊事机械有限公司| 江苏腾通包装机械有限公司| 许昌 机械有限公司| 江苏梅花机械有限公司| 安徽金庆龙机械制造有限公司| 江苏坤泰机械有限公司| 东莞市今塑精密机械有限公司| 秦皇岛 机械设备有限公司| 科尼乐机械设备有限公司| 昆山市众捷塑料机械有限公司| 河北天择重型机械有限公司| 昆山贝奇精密机械有限公司| 聊城 机械 有限公司| 南京橡塑机械有限公司| 宁波钛龙机械有限公司| 山东煤矿机械有限公司| 麻阳金湘钢铁有限公司| 苏州苏鹰机械制造有限公司| 河北冠能石油机械制造有限公司 | 河南国起泵业有限公司| 烟台 机械有限公司| 廊坊中建机械有限公司| 厦门全新彩钢机械有限公司| 湖北 机械制造有限公司| 鄂州鸿泰钢铁有限公司| 上海德珂斯机械自动化技术有限公司| 青岛农业机械有限公司| 威马农业机械有限公司| 成都诚旭精密机械有限公司| 河南起重设备有限公司| 东莞市机械有限公司| 宁波友杰机械有限公司| 武汉市快诚机械有限公司| 成都瑞迪机械实业有限公司| 山东首钢钢铁贸易有限公司| 温州市友田包装机械有限公司| 河南龙昌机械制造有限公司| 上海盾克机械有限公司| 江阴戎辉机械设备制造有限公司| 农业机械有限公司招聘|