web-dev-qa-db-ja.com

GETDATEでストアドプロシージャを呼び出す ')'付近の構文が正しくありません

たぶん私は「午後」の瞬間を過ごしていますが、だれでも私が得る理由を説明できます

メッセージ102、レベル15、状態1、行2
')'付近の構文が正しくありません。

実行中

CREATE PROC DisplayDate 
    (@DateVar DATETIME) 
AS 
BEGIN
    SELECT @DateVar
END
GO

EXEC DisplayDate GETDATE();
108
Nat

ストアドプロシージャの引数として関数呼び出しを渡すことはできません。代わりに、中間変数を使用します。

DECLARE @tmp DATETIME
SET @tmp = GETDATE()

EXEC DisplayDate @tmp;
154
Mitch Wheat

Mitch Wheatのように、関数を渡すことはできません。

あなたの場合、事前に計算された値またはGETDATE()を渡す必要があります-デフォルト値を使用できます。たとえば、ストアドプロシージャを変更します。

ALTER PROC DisplayDate 
(
    @DateVar DATETIME = NULL
) AS 
BEGIN
    set @DateVar=ISNULL(@DateVar,GETDATE())

    --the SP stuff here
    SELECT @DateVar
END
GO

そして、試してください:

EXEC DisplayDate '2013-02-01 00:00:00.000'
EXEC DisplayDate

備考:ここでは、このパラメーターにNULL値が使用されていないと仮定しました。それ以外の場合-「1900-01-01 00:00:00.000」など、別の未使用の値を使用できます

20
Alexander