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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # ALTER FUNCTION ## Name ALTER FUNCTION?--?修改一個函數的定義 ## Synopsis ``` ALTER FUNCTION _name_ ( [ [ _argmode_ ] [ _argname_ ] _argtype_ [, ...] ] ) _action_ [ ... ] [ RESTRICT ] ALTER FUNCTION _name_ ( [ [ _argmode_ ] [ _argname_ ] _argtype_ [, ...] ] ) RENAME TO _new_name_ ALTER FUNCTION _name_ ( [ [ _argmode_ ] [ _argname_ ] _argtype_ [, ...] ] ) OWNER TO _new_owner_ ALTER FUNCTION _name_ ( [ [ _argmode_ ] [ _argname_ ] _argtype_ [, ...] ] ) SET SCHEMA _new_schema_ where `_action_` is one of: CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT IMMUTABLE | STABLE | VOLATILE | [ NOT ] LEAKPROOF [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER COST _execution_cost_ ROWS _result_rows_ SET _configuration_parameter_ { TO | = } { _value_ | DEFAULT } SET _configuration_parameter_ FROM CURRENT RESET _configuration_parameter_ RESET ALL ``` ## 描述 `ALTER FUNCTION` 修改一個函數的定義。 要使用`ALTER FUNCTION` ,你必須是該函數的所有者。 要修改一個函數的模式,你還必須在新模式上擁有 `CREATE` 權限。 要修改所有者,你必須還是新的所有角色的直接或者間接的成員,并且該成員必須在此函數的模式上有 `CREATE` 權限。 (這些限制保證了修改所有者和刪除、重建函數的動作沒啥區別。 不過,超級用戶可以用任何方法修改函數的所有關系。) ## 參數 `_name_` 一個現有的函數名字(可以有模式修飾) 。 `_argmode_` 參數的模式:`IN`、`OUT`、`INOUT`或是`VARIADIC`。 如省略的話,缺省是`IN`。 注意`ALTER FUNCTION` 實際不會關注任何`OUT` 參數, 因為確認函數的邏輯只需要知道輸入參數。 因此列出`IN`、`INOUT`和`VARIADIC`參數就足夠了。 `_argname_` 參數的名字。 請注意`ALTER FUNCTION`實際上不會關注參數的名字,因為只有參數的數據類型用于確認函數的邏輯。 `_argtype_` 如果有的話,是該函數參數的數據類型(可以用模式修飾)。 `_new_name_` 函數的新名字。 `_new_owner_` 函數的新所有者。請注意如果函數標記為`SECURITY DEFINER`,那么它隨后將以新的所有者執行。 `_new_schema_` 函數的新模式名稱。 `CALLED ON NULL INPUT``RETURNS NULL ON NULL INPUT` `STRICT` `CALLED ON NULL INPUT` 選項會在函數的部分或是全部的參數是NULL的時候會調用它。 `RETURNS NULL ON NULL INPUT`或`STRICT` 把函數改成如果任何一個參數是NULL就根本不執行并且自動返回NULL 。 參閱[CREATE FUNCTION](#calibre_link-4)獲取更多信息。 `IMMUTABLE` `STABLE` `VOLATILE` 把函數的易失屬性修改為指定類型。參閱[CREATE FUNCTION](#calibre_link-4)了解更多細節。 `[ EXTERNAL ] SECURITY INVOKER` `[ EXTERNAL ] SECURITY DEFINER` `SECURITY INVOKER`表明該函數將帶著調用它的用戶的權限執行。 `SECURITY DEFINER` 聲明該函數將以創建它的用戶的權限執行。 關鍵字 `EXTERNAL` 不是必需的,僅是為了和 SQL 兼容。參閱 [CREATE FUNCTION](#calibre_link-4) 了解更多細節。 `LEAKPROOF` 更改函數的密封性。 參閱 [CREATE FUNCTION](#calibre_link-4) 了解更多細節。 `COST` `_execution_cost_` 更改函數的估計執行成本。 參閱[CREATE FUNCTION](#calibre_link-4)了解更多細節。 `ROWS` `_result_rows_` 更改返回數據集類型函數的返回估計行數。參閱[CREATE FUNCTION](#calibre_link-4)了解更多細節。 `_configuration_parameter_` `_value_` 當函數被調用時,添加或者更改對配置參數值的配置。如果 `_value_`是`DEFAULT`, 或者相應地`RESET`選項被使用,函數的局部設置參數會被清除,這樣函數會使用當前環境中的參數值來執行。 使用`RESET ALL`來清理所有的函數局部設置參數。 `SET FROM CURRENT`保存會話的參數當前值為函數調用時會應用的參數值。 參閱[SET](#calibre_link-675)和[Chapter 18](#calibre_link-500) 了解更多關于允許的參數名稱和數值的信息。 `RESTRICT` 可忽略的選項,僅為了符合SQL標準。 ## 例子 把參數類型為`integer`的函數`sqrt`重命名為`square_root` : ``` ALTER FUNCTION sqrt(integer) RENAME TO square_root; ``` 把參數類型為`integer`的函數`sqrt`的所有者修改為`joe` : ``` ALTER FUNCTION sqrt(integer) OWNER TO joe; ``` 把參數類型為`integer`的函數`sqrt`的模式修改為`maths`: ``` ALTER FUNCTION sqrt(integer) SET SCHEMA maths; ``` 調整自動為函數設定的搜索路徑: ``` ALTER FUNCTION check_password(text) SET search_path = admin, pg_temp; ``` 禁用針對一個函數的`search_path`自動設置: ``` ALTER FUNCTION check_password(text) RESET search_path; ``` 這個函數在執行時所用的搜索路徑將是根據調用者所用的搜索路徑。 ## 兼容性 這個語句部分兼容SQL標準里面的`ALTER FUNCTION`語句。 標準允許修改函數的更多屬性,但是沒有提供修改函數名字的功能, 也沒有提供把一個函數定義為安全定義器的功能, 更沒有修改函數所有者、模式、易失性的功能。 標準還要求`RESTRICT`關鍵字,這在PostgreSQL里是可選的。 ## 參見 [CREATE FUNCTION](#calibre_link-4), [DROP FUNCTION](#calibre_link-587)
                  <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>

                              哎呀哎呀视频在线观看