計算列は保存できません 質問する

計算列は保存できません 質問する

カスタム関数があり、この関数を使用して永続列を作成しようとしています。

次のエラーが発生します。

テーブル 'SomeTable' の計算列 'FormattedSSN' は非決定論的であるため、保存できません。

関数は次のとおりです。

ALTER FUNCTION [dbo].[FormatSSN]()
RETURNS VARCHAR(11)
AS
BEGIN
    return '';
END

関数を使用して列を追加するクエリは次のとおりです。

ALTER TABLE SomeTable
ADD FormattedSSN as dbo.FormatSSN() PERSISTED

何か解決策があれば提案してください。よろしくお願いします。

ベストアンサー1

追加スキーマバインディング付き関数は次のようになります:

ALTER FUNCTION [dbo].[FormatSSN]
(
@SSN    VARCHAR(9)
)
RETURNS CHAR(11)
WITH SCHEMABINDING
AS
BEGIN
  your stuff here
END

次にこれを実行して確認します。

IF OBJECTPROPERTY (OBJECT_ID(N'[dbo].[FormatSSN]'),'IsDeterministic') = 1
   PRINT 'Function is detrministic.'
ELSE IF OBJECTPROPERTY (OBJECT_ID(N'[dbo].[FormatSSN]'),'IsDeterministic') = 0
   PRINT 'Function is NOT detrministic'
GO

ここで働いています。

おすすめ記事