2

別の開発者は、SQL ジョブとして毎月実行するように設定されたストアド プロシージャを作成しました。datetime の 1 つのパラメーターを取ります。ジョブまたはクエリ ウィンドウでそれを呼び出そうとすると、エラーが発生しますIncorrect syntax near ')'。それを実行するための呼び出しは次のとおりです。

exec CreateHeardOfUsRecord getdate()

ハードコードされた日付を指定すると、exec CreateHeardOfUsRecord '4/1/2010'正常に機能します。getdate()このコンテキストで使用できない理由はありますか? ありがとう。

4

4 に答える 4

3

Execで渡されるパラメータは、定数または変数のいずれかである必要があります。GetDate()は関数として分類されます。GetDate()の結果を保持する変数を宣言してから、それをストアドプロシージャに渡す必要があります。

指定する値は定数または変数である必要があります。関数名をパラメーター値として指定することはできません。変数は、ユーザー定義変数または@@spidなどのシステム変数にすることができます。

于 2010-04-23T17:15:34.447 に答える
1

EXECUTE (Transact-SQL)を見て

[ { EXEC | EXECUTE } ]
    { 
      [ @return_status = ]
      { module_name [ ;number ] | @module_name_var } 
        [ [ @parameter = ] { value 
                           | @variable [ OUTPUT ] 
                           | [ DEFAULT ] 
                           }

定数値、変数、または DEFAULT 句のみを渡すことができます

やってみて:

create procedure xy_t
@p datetime
as
select @p
go

exec xy_t GETDATE()

出力:

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near ')'.
于 2010-04-23T17:16:24.740 に答える
0

Convert(varchar, GetDate(), 101) を渡してみてください

于 2010-04-23T17:18:51.813 に答える
0

ここでKmのコードを使用することはそれを行う方法です

create procedure xy_t 
@p datetime 
as 
select @p 
go 

declare @date datetime

set @date = getdate() 

exec xy_t @date 
于 2010-04-23T17:23:35.613 に答える