質問

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

exec CreateHeardOfUsRecord getdate()

のようなハードコード化された日付を与えると exec CreateHeardOfUsRecord '4/1/2010' 正常に動作します。なぜ私が使えないのか考えています getdate() この文脈で?ありがとう。

役に立ちましたか?

解決

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

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

他のヒント

見て Execute(transact-sql)

[ { EXEC | EXECUTE } ]
    { 
      [ @return_status = ]
      { module_name [ ;number ] | @module_name_var } 
        [ [ @parameter = ] { value 
                           | @variable [ OUTPUT ] 
                           | [ 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 ')'.

convert(varchar、getdate()、101)を合格してみてください

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

create procedure xy_t 
@p datetime 
as 
select @p 
go 

declare @date datetime

set @date = getdate() 

exec xy_t @date 
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top