1. ホーム
  2. sql

[解決済み] 新しいオプションのパラメータを受け入れるためにSQLサーバー関数を変更する

2022-02-14 23:59:46

質問

SQL Server 2005ですでに次のような関数を持っています。

ALTER function [dbo].[fCalculateEstimateDate] (@vWorkOrderID numeric)
Returns varchar(100)  AS
Begin
  <Function Body>
End

この関数にオプションのパラメータ@ToDateを追加できるように修正したい。私は、@Todateが提供された場合、関数にロジックを追加するつもりです、そして、他の何かを行う 既存のコードを継続します。

私はこの関数を次のように修正しました。

ALTER function [dbo].[fCalculateEstimateDate] (@vWorkOrderID numeric,@ToDate DateTime=null)
Returns varchar(100)  AS
Begin
  <Function Body>
End

これで、次のように関数を呼び出すことができる。

SELECT dbo.fCalculateEstimateDate(647,GETDATE())

しかし、次の呼び出しでエラーになります。

SELECT dbo.fCalculateEstimateDate(647)

として

プロシージャまたはアプリケーションの引数の数が不足しています。 関数dbo.fCalculateEstimateDate.

私の理解では、このようなことは起こらないはずです。

何か見落としがあるのでしょうか? よろしくお願いします。

解決方法は?

から CREATE FUNCTION :

関数のパラメータがデフォルト値を持つ場合、キーワード DEFAULT は、デフォルト値を取得するために関数を呼び出す際に指定する必要があります。この動作は、ストアドプロシージャでデフォルト値を持つパラメータを使用する場合、パラメータを省略するとデフォルト値も暗黙のうちに指定されてしまうのとは異なります。

ということが必要なんですね。

SELECT dbo.fCalculateEstimateDate(647,DEFAULT)