2017-09-06 6 views
1

ストアドプロシージャでDATEADDを使用しようとすると:これは罰金作成は、SQLは、私はAzureの上で私の例のデータベースにストアドプロシージャを作成しました

CREATE PROCEDURE SalesLT.InsertOrderHeader(@OrderDate AS DATETIME=NULL, @DueDate AS DATETIME=NULL, @CustomerID AS INT=NULL) 
AS 
DECLARE @SalesOrderID INT = NEXT VALUE FOR SalesLT.SalesOrderNumber 
IF @OrderDate IS NULL 
    BEGIN 
     SET @OrderDate = GETDATE() 
    END 

INSERT INTO SalesLT.SalesOrderHeader(SalesOrderID,OrderDate,DueDate,CustomerID,ShipMethod) 
VALUES (@SalesOrderID,@OrderDate,@DueDate,@CustomerID,'CARGO TRANSPORT 5') 

PRINT @SalesOrderID 

が、私はそれを呼び出すようにしようとしたとき、私はからの週の日付を望んでいました現在:

EXEC SalesLT.InsertOrderHeader @DueDate= DATEADD(dd,7,getDate()) , @CustomerID=1 

これは機能しませんでした。エラーは、get日付の閉じ括弧のための同じそれが言うところそれは期待していた「D-D」と言う(または選択して、それと間違って何

+0

[付近に正しくない構文 ')' GETDATEとにStoredProcを呼び出す](https://stackoverflow.com/questions/2399104/incorrect-syntax-near-calling-storedproc-with-getdate) –

+0

あなたの可能性のある重複ストアドプロシージャの引数として関数呼び出しを渡すことはできません。代わりに中間変数を使用してください https://stackoverflow.com/questions/2399104/incorrect-syntax-near-calling-storedproc-with-getdate –

答えて

0

EXEC:。?

[ [ @parameter = ] { value 
         | @variable [ OUTPUT ] 
         | [ DEFAULT ] 
         } 
    ] 
    [ ,...n ] 

注意、慎重に、何それは受け入れていないこと表現である。それはを受け入れ、それが変数を受け入れること。

あなたは別のラインとsにDATEADDロジックを移動する必要があります結果の値を変数に戻します。

DECLARE @dt datetime 
SET @dt = DATEADD(day,7,getDate()) 
EXEC SalesLT.InsertOrderHeader @DueDate= @dt , @CustomerID=1 
関連する問題