熱點推薦:
您现在的位置: 電腦知識網 >> 操作系統 >> Windows系統管理 >> 正文

ALTER FUNCTION

2022-06-13   來源: Windows系統管理 

  更改先前由CREATE FUNCTION 語句創建的現有用戶定義函數但不會更改權限也不影響相關的函數存儲過程或觸發器
  語法
  標量函數
  
  ALTER FUNCTION [ owner_name ] function_name
   ( [ { @parameter_name scalar_parameter_data_type [ = default ] } [ n ] ] )
  
  RETURNS scalar_return_data_type
  
  [ WITH < function_option> [n] ]
  
  [ AS ]
  
  BEGIN
   function_body
   RETURN scalar_expression
  END
  
  內嵌表值函數
  
  ALTER FUNCTION [ owner_name ] function_name
   ( [ { @parameter_name scalar_parameter_data_type [ = default ] } [ n ] ] )
  
  RETURNS TABLE
  
  [ WITH < function_option > [ n ] ]
  
  [ AS ]
  
  RETURN [ ( ] selectstmt [ ) ]
  
  多語句表值函數
  
  ALTER FUNCTION [ owner_name ] function_name
   ( [ { @parameter_name scalar_parameter_data_type [ = default ] } [ n ] ] )
  
  RETURNS @return_variable TABLE < table_type_definition >
  
  [ WITH < function_option > [ n ] ]
  
  [ AS ]
  
  BEGIN
   function_body
   RETURN
  END
  
  < function_option > ::=
   { ENCRYPTION | SCHEMABINDING }
  
  < table_type_definition > ::=
   ( { column_definition | table_constraint } [ n ] )
  
  
  參數
  owner_name
  
  擁有待更改的用戶定義函數的用戶 ID 名owner_name 必須是現有用戶 ID
  
  function_name
  
  是要更改的用戶定義函數函數名稱必須符合標識符的規則對其所有者來說該名稱在數據庫中必須是唯一的
  
  @parameter_name
  
  用戶定義函數的參數可聲明一個或多個參數函數最多可以有 個參數用戶必須在執行函數時提供每個所聲明參數的值(除非定義了該參數的默認值)當該函數的參數有默認值時在調用該函數時必須指定default關鍵字才能獲得默認值此行為不同於在存儲過程中有默認值的參數在存儲過程中省略參數也意味著使用默認值
  
  使用 @ 符號作為第一個字符來指定參數名稱參數名稱必須符合標識符的規則每個函數的參數僅用於該函數本身相同的參數名稱可以用在其它函數中參數只能代替常量而不能用於代替表名列名或其它數據庫對象的名稱
  
  scalar_parameter_data_type
  
  參數的數據類型所有標量數據類型(包括 bigint 和 sql_variant)都可用作用戶定義函數的參數不支持 timestamp 數據類型不能指定非標量類型(例如 cursor 和 table)
  
  scalar_return_data_type
  
  是標量用戶定義函數的返回值scalar_return_data_type 可以是 SQL Server 支持的任何標量數據類型(textntextimage 和 timestamp 除外)
  
  scalar_expression
  
  指定標量函數返回標量值
  
  TABLE
  
  指定表值函數的返回值為表
  
  在內嵌表值函數中通過單個 SELECT 語句定義 TABLE 返回值內嵌函數沒有相關聯的返回變量
  
  在多語句表值函數中@return_variable 是 TABLE 變量用於存儲和累積應作為函數值返回的行
  
  function_body
  
  指定一組 TransactSQL 語句定義函數的值這些語句合在一起不會產生副作用function_body 只用於標量函數和多語句表值函數
  
  在標量函數中function_body 是一系列合起來求得標量值的 TransactSQL 語句
  
  在多語句表值函數中function_body 是一系列填充表返回變量的 TransactSQL 語句
  
  selectstmt
  
  是定義內嵌表值函數返回值的單個 SELECT 語句
  
  ENCRYPTION
  
  指出 SQL Server 加密包含 CREATE FUNCTION 語句文本的系統表列使用 ENCRYPTION 可以避免將函數作為 SQL Server 復制的一部分發布
  
  SCHEMABINDING
  
  指定將函數綁定到它所引用的數據庫對象如果其它架構綁定對象引用該函數此條件將防止更改該函數
  
  函數與其所引用對象的綁定關系只有在發生以下兩種情況之一時才被解除
  
  除去了函數
  
  
  在未指定 SCHEMABINDING 選項的情況下更改了函數(使用 ALTER 語句)
  有關函數綁定到架構所必須滿足的條件列表請參見 CREATE FUNCTION
  
  注釋
  不能用 ALTER FUNCTION 將標量值函數更改為表值函數反之亦然同樣地也不能用 ALTER FUNCTION 將行內函數更改為多語句函數反之亦然
  
  權限
  ALTER FUNCTION 權限默認授予 sysadmin 固定服務器角色成員db_owner 和 db_ddladmin 固定數據庫角色成員和函數的所有者且不可轉讓
  
  函數的所有者對其函數具有 EXECUTE 權限不過也可將此權限授予其他用戶

From:http://tw.wingwit.com/Article/os/xtgl/201311/8789.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.