<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 35.5\. 函數重載 多個函數可以定義成同樣的SQL名字,只要它們接受的參數不同。 換句話說,函數名可以_重載_。在執行一個查詢的時候, 服務器會從提供的參數類型和個數上判斷應該調用哪個函數。 重載也可以用于模擬數目不定(有上限)的參數。 在創建一族重載函數的時候,我們應該小心避免歧義。比如,對于下面的函數: ``` CREATE FUNCTION test(int, real) RETURNS ... CREATE FUNCTION test(smallint, double precision) RETURNS ... ``` 如果給出一些簡單的輸入,比如`test(1, 1.5)`, 系統要想判斷應該調用哪個函數可不是一件很容易的事情。 目前實現的解析規則在[Chapter 10](#calibre_link-447)里描述, 但是設計一個隱含依賴這些行為的系統是不明智的。 一個接受單個復合類型參數的函數通常不應該和該類型或該類型的任何屬性(字段)同名。 `attribute(table)`被認為等效于`table.attribute`。 在這種情況下,一個復合類型上的函數會和一個復合類型的屬性有歧義(總是使用屬性)。 我們可以通過使用模式來修飾函數名(也就是`schema.func(table)`)以繞開這個限制, 但最好還是通過使用無沖突的名字來避免這個問題。 另一個可能的沖突是可變的和非可變參數之間的函數關系。 例如,它可以創建`foo(numeric)`和 `foo(VARIADIC numeric[])`。在這種情況下,目前還不清楚哪一個 應匹配提供一個數字參數的調用,如 `foo(10.1)`。規則是函數早期出現在使用的搜索路徑中, 或者如果兩個函數都在同樣的模式下,非-可變參數優先。 在重載C語言函數的時候,還有一個額外的限制: 重載族的每個函數的C名字必須和所有其它函數的C名字不同, 其它函數包括內部的和動態加載的。如果違反這條規則, 那么行為是不可移植的。你可能會得到一個運行時的鏈接錯誤, 或者是其中一個函數被調用(通常是內部的那個)。 `CREATE FUNCTION`命令可選的`AS`子句 把SQL函數名和C源代碼中的函數名分離開。 比如: ``` CREATE FUNCTION test(int) RETURNS int AS '_filename_', 'test_1arg' LANGUAGE C; CREATE FUNCTION test(int, int) RETURNS int AS '_filename_', 'test_2arg' LANGUAGE C; ``` 這里的C函數名代表許多可能的慣例之一。
                  <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>

                              哎呀哎呀视频在线观看