<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國際加速解決方案。 廣告
                # 41.2\. PL/Tcl 函數和參數 要用PL/Tcl語言創建一個函數,使用標準的[CREATE FUNCTION](#calibre_link-4)語法: ``` CREATE FUNCTION _funcname_ (_argument-types_) RETURNS _return-type_ AS $$ # PL/Tcl function body $$ LANGUAGE pltcl; ``` PL/TclU是一樣的,除了語言應該聲明為`pltclu`之外。 函數體就是一段 Tcl 代碼。當在一個查詢里面調用這個函數,參數是作為變量 `$1` ... `$``_n_`傳遞給 Tcl 腳本的。 結果是用通常的方法從 Tcl 代碼中返回的,就是用一個`return`語句。 比如,一個簡單的返回兩個整數值中較大值的函數可以這樣定義: ``` CREATE FUNCTION tcl_max(integer, integer) RETURNS integer AS $$ if {$1 > $2} {return $1} return $2 $$ LANGUAGE pltcl STRICT; ``` 請注意`STRICT`子句,它讓我們可以不用考慮輸入為 NULL 的情況: 如果傳遞了一個 NULL ,該函數實際上就不會被調用,而只是自動返回一個 NULL 結果。 如果是一個不嚴格的函數且一個參數的實際值是 NULL ,那么對應的`$``_n_` 變量將被設置為一個空字符串。要檢測一個特定的參數是否為 NULL ,可以使用`argisnull`函數。 比如,假設要求`tcl_max`在一個參數為 null 而另外一個為非 null 時返回非 null 參數, 而不是 null : ``` CREATE FUNCTION tcl_max(integer, integer) RETURNS integer AS $$ if {[argisnull 1]} { if {[argisnull 2]} { return_null } return $2 } if {[argisnull 2]} { return $1 } if {$1 > $2} {return $1} return $2 $$ LANGUAGE pltcl; ``` 如上所述,要從 PL/Tcl 函數中返回一個 NULL 數值,可以執行`return_null`。 不管函數是否嚴格,都可以這么做。 復合類型的參數是當做 Tcl 數組傳遞給函數的。數組中的元素名字就是復合類型里的屬性名字。 如果在傳遞的行中某個屬性為 NULL 數值,那它就不會在數組中出現。下面是一個例子: ``` CREATE TABLE employee ( name text, salary integer, age integer ); CREATE FUNCTION overpaid(employee) RETURNS boolean AS $$ if {200000.0 < $1(salary)} { return "t" } if {$1(age) < 30 && 100000.0 < $1(salary)} { return "t" } return "f" $$ LANGUAGE pltcl; ``` 目前沒有返回復合類型結果的支持。也不支持返回結果集。 PL/Tcl目前還不是完全支持域類型:它看待域類型和下層的標量類型是一樣的。 這就意味著與域關聯的約束將不會被強制。對于函數參數,這不是什么問題, 但是如果你把PL/Tcl函數聲明為返回一個域類型,那么就有危險。
                  <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>

                              哎呀哎呀视频在线观看