create view v_getdate
as
select getdate() [output]
go
--------------------------------- --------------------------------
関数 f_getdate() を作成
begin
declare @n datetime として datetime
を返します
select @ n = v_getdate からの出力
return(@n)
end
go
---------------------------- --- --------------------------------
呼び出し: select dbo.f_getdate()
===== ====== =========================================== ====== =========
-----以下は分析です----------
関数内で使用する必要があり、許可されていません
関数は決定論的または不確かな。関数が特定の入力値のセットで呼び出されるたびに常に同じ結果を返す場合、関数は決定的です。特定の入力値のセットが同じであっても、呼び出されるたびに返される結果が異なる場合、関数は非決定的です。
不確実な関数には副作用が生じる可能性があります。副作用として、データベース テーブルやファイルやネットワークなどの外部リソースの更新 (ファイルの変更や電子メール メッセージの送信など) など、データベースのグローバルな状態が変更されることがあります。
ユーザー定義関数の本体に非決定的関数を組み込むことは許可されていません。これらの非決定的関数は次のとおりです:
@@CONNECTIONS @@TOTAL_ERRORS
@@CPU_BUSY @@TOTAL_READ
@@IDLE @@TOTAL_WRITE
@@IO_BUSY GETDATE
@@MAX_CONNECTIONS GETUTCDATE
@@PACK_RECEIVED NEWID
@@PACK_SENT RAND
@@PACKET_ERRORS TEXTPTR
@@TIMETICKS
ユーザー定義関数本体では不定関数は許可されませんが、これらのユーザー定義関数は依然として生成できます拡張ストアド プロシージャを呼び出すときの副作用。
拡張ストアド プロシージャはデータベースに副作用をもたらす可能性があるため、拡張ストアド プロシージャの関数呼び出しは未定義です。ユーザー定義関数がデータベースに副作用をもたらす拡張ストアド プロシージャを呼び出す場合、結果セットの一貫性や関数の実行を期待しないでください。