<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 4.3\. 調用函數 PostgreSQL允許函數有命名參數,可以被_位置_ 或_名稱_表示法調用。名稱表示法對有大量參數的函數特別有用, 因為它更加明確和可靠的標記了形參和實參之間的聯系。 在位置表示法里,一個函數調用的參數值要用與函數聲明相同的順序來寫出。 在名稱表示法里,參數是通過名稱來與函數參數相匹配的,可以以任意順序寫出。 不管用那種表示法,在函數聲明時給出的有默認值的參數在調用時不必寫出。 但是這在名稱表示法中是特別有用的,因為參數的任意組合都是可以省略的。 而在位置表示法中,參數只能從右到左省略。 PostgreSQL也支持_混合_表示法, 混合表示法結合了位置和名稱表示法。因為這個原因,先寫位置參數然后跟著寫命名參數。 下面的例子將說明三種表示法的用法,使用下面的函數定義: ``` CREATE FUNCTION concat_lower_or_upper(a text, b text, uppercase boolean DEFAULT false) RETURNS text AS $$ SELECT CASE WHEN $3 THEN UPPER($1 || ' ' || $2) ELSE LOWER($1 || ' ' || $2) END; $$ LANGUAGE SQL IMMUTABLE STRICT; ``` 函數`concat_lower_or_upper`有兩個強制的參數,`a`和`b`。 此外第三個參數是一個可選參數`uppercase`,默認為`false`。 `a`和`b`輸入將被串聯,并且將根據`uppercase` 參數強制為大寫或者小寫。這個函數定義的其他詳細資料在這并不重要(參閱[Chapter 35](#calibre_link-828) 獲取更多信息)。 ## 4.3.1\. 使用位置表示法 在PostgreSQL中,位置表示法是傳遞參數到函數的傳統機制。 一個例子是: ``` SELECT concat_lower_or_upper('Hello', 'World', true); concat_lower_or_upper ----------------------- HELLO WORLD (1 row) ``` 所有的參數都按順序指定。因為`uppercase`被指定為`true`, 所以結果為大寫。另外一個例子是: ``` SELECT concat_lower_or_upper('Hello', 'World'); concat_lower_or_upper ----------------------- hello world (1 row) ``` 這里,省略了參數`uppercase`,所以接受它的默認值`false`, 導致小寫的輸出。在位置表示法中,參數只要有默認值就可以從右到左省略。 ## 4.3.2\. 使用名稱表示法 在名稱表示法中,每個參數名字是使用`:=`聲明的,用來將它從參數表達式中獨立出來。 例如: ``` SELECT concat_lower_or_upper(a := 'Hello', b := 'World'); concat_lower_or_upper ----------------------- hello world (1 row) ``` 另外,參數`uppercase`是省略的,所以它被隱式的設置為`false`。 使用名稱表示法的好處之一是參數可以用任意順序聲明,例如: ``` SELECT concat_lower_or_upper(a := 'Hello', b := 'World', uppercase := true); concat_lower_or_upper ----------------------- HELLO WORLD (1 row) SELECT concat_lower_or_upper(a := 'Hello', uppercase := true, b := 'World'); concat_lower_or_upper ----------------------- HELLO WORLD (1 row) ``` ## 4.3.3\. 使用混合表示法 混合表示法結合了位置和名稱表示法。然而,就像之前提到的,命名參數不可以在位置參數前面。例如: ``` SELECT concat_lower_or_upper('Hello', 'World', uppercase := true); concat_lower_or_upper ----------------------- HELLO WORLD (1 row) ``` 在上面的查詢中,參數`a`和`uppercase`是用位置聲明的,而 `uppercase`是用名稱聲明的。在這個例子中,添加了文檔中沒有的一點。 在一個有多個參數有默認值的更復雜的函數中,名稱或者混合表示法可以節省很多敲鍵, 并且可以減少犯錯的幾率。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看