SQL SERVER 中的自訂函數(一) 純量值函式

來源:互聯網
上載者:User

--------------------自訂函數--------------
--建立使用者定義函數。這是一個已儲存 Transact-SQL 或通用語言執行平台 (CLR) 常式,
--該常式可返回一個值。使用者定義函數不能用於執行修改資料庫狀態的操作。
--與系統函數一樣,使用者定義函數可從查詢中調用。純量涵式和預存程序一樣,可使用 EXECUTE 語句執行。

純量涵式的文法格式

CREATE FUNCTION [ schema_name. ] function_name
( [ { @parameter_name [ AS ][ type_schema_name. ] parameter_data_type
    [ = default ] }
    [ ,...n ]
  ]
)
RETURNS return_data_type
    [ WITH <function_option> [ ,...n ] ]
    [ AS ]
    BEGIN
                function_body
        RETURN scalar_expression
    END
[ ; ]

建立一個簡單的純量涵式

 使用者定義函數不能用於執行修改資料庫狀態的操作 即不能對錶進行修改.添加.刪除

下列語句在函數內有效:

  • 指派陳述式。
  • TRY...CATCH 語句以外的流量控制語句。
  • 定義局部資料變數和局部遊標的 DECLARE 語句。
  • SELECT 語句,其中的挑選清單包含為局部變數分配值的運算式。
  • 遊標操作,該操作引用在函數中聲明、開啟、關閉和釋放的局部遊標。只允許使用以 INTO 子句向局部變數賦值的 FETCH 語句;不允許使用將資料返回到用戶端的 FETCH 語句。
  • 修改 table 局部變數的 INSERT、UPDATE 和 DELETE 語句。
  • 調用擴充預存程序的 EXECUTE 語句。

使用者定義函數可以嵌套

也就是說,使用者定義函數可相互調用。被調用函數開始執行時,嵌套層級將增加;被調用函數執行結束後,嵌套層級將減少。使用者定義函數的嵌套層級最多可達 32 級。如果超出最大嵌套層級數,整個調用函數鏈將失敗。

 

Code
CREATE FUNCTION HelloWordFunction(@Text VARCHAR(10)) 

--參數的類型和長度必須指定大小如果不指定會出現值的長度丟失 

--傳回值的長度也要指定
RETURNS VARCHAR(10)
BEGIN
 RETURN @Text
END

 

調用方式

方式一 :純量涵式和預存程序一樣,可使用 EXECUTE 語句執行

Code
DECLARE @ReturnValue VARCHAR(10)
EXECUTE @ReturnValue=dbo.HelloWordFunction 'HelloWrod'
PRINT @ReturnValue

結果:

 

方式二:直接調用

 

Code
PRINT dbo.[HelloWordFunction]('Hello')

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.