99偷拍视频精品区一区二,口述久久久久久久久久久久,国产精品夫妇激情啪发布,成人永久免费网站在线观看,国产精品高清免费在线,青青草在线观看视频观看,久久久久久国产一区,天天婷婷久久18禁,日韩动漫av在线播放直播

PostgreSQL中VARIADIC函數如何使用

今天就跟大家聊聊有關PostgreSQL中VARIADIC函數如何使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

成都創新互聯是一家集網站建設,武義企業網站建設,武義品牌網站建設,網站定制,武義網站建設報價,網絡營銷,網絡優化,武義網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力。可充分滿足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。

1、示例

CREATE OR REPLACE FUNCTION test_v(p1 int, VARIADIC p2 any[])
RETURNS void AS
$test_v$
BEGIN
NULL;
END;
$test_v$
LANGUAGE plpgsql;

這里,VARIADIC參數必須是數組,而數組

2、使用

調用方式1

SELECT test_v(1,2,3);

調用方式2

SELECT test_v(1,VARIADIC '{2,3,4}'::int[]);

第一種方式其實在語義層會轉換成第二種方式,這些邏輯在函數 ParseFuncOrColumn 中,有興趣可以自行查看。

3、第二種調用方式的語法

  | func_name '(' VARIADIC func_arg_expr opt_sort_clause ')'
    {
      FuncCall *n = makeFuncCall($1, list_make1($4), @1);
      n->func_variadic = true;
      n->agg_order = $5;
      $$ = (Node *)n;
    }
  | func_name '(' func_arg_list ',' VARIADIC func_arg_expr opt_sort_clause ')'
    {
      FuncCall *n = makeFuncCall($1, lappend($3, $6), @1);
      n->func_variadic = true;
      n->agg_order = $7;
      $$ = (Node *)n;
    }

只是指定這是VARIADIC函數調用,參數并沒有特別處理。

4、實際參數列表

在語法層,第一張調用方式有三個常量參數:整型 整型 整型,而第二種則是兩個參數:整型 整型數組。第一種調用方式在上邊說的 ParseFuncOrColumn 函數中,后兩者合并為一個參數:數組表達式(ArrayExpr)。

5、不能多種參數類型混合

我們可以實現 func(int, int, int ...),但無法實現 func(int, text, int, text ...),數組不允許這么做,在語義層就會報錯無法繼續。

當然,這個限制并不會影響我們使用PG,并不會因為它函數就沒法定義。主要的影響是遷移,比如Oracle應用會用到decode這樣的函數,在現有機制下,并沒有比較完美的方案去實現。

6、PL/pgSQL

文檔中似乎沒有提到PL/pgSQL對VARIADIC參數的支持(也許有,沒仔細看),但它是可以處理的。而且從上邊看,VARIADIC參數最后傳遞的是一個數組而已,不是什么特別的東西。

回歸測試中的示例:

-- test variadic functions
create or replace function vari(variadic int[])
returns void as $$
begin
  for i in array_lower($1,1)..array_upper($1,1) loop
    raise notice '%', $1[i];
  end loop; end;
$$ language plpgsql;

看完上述內容,你們對PostgreSQL中VARIADIC函數如何使用有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注創新互聯行業資訊頻道,感謝大家的支持。

分享文章:PostgreSQL中VARIADIC函數如何使用
文章來源:http://www.yijiale78.com/article20/pdshco.html

成都網站建設公司_創新互聯,為您提供云服務器搜索引擎優化手機網站建設網站設計App開發品牌網站制作

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

手機網站建設