0

ストアド プロシージャ (SP1) があり、別のストアド プロシージャ (SP2) を呼び出す必要があります。

コード SP2

ALTER PROCEDURE dbo.addOrderStatus
    (
    @orderID INT,
    @statusID INT,
    @startTime DATETIME,
    @endTime DATETIME,
    @isActive BIT
    )
AS
BEGIN
    SET NOCOUNT ON
    INSERT INTO Order_Status
    (orderID, statusID, startTime, endTime, isActive) VALUES
    (@orderID, @statusID, @startTime, @endTime, @isActive)
END

コード SP1

ALTER PROCEDURE [dbo].addNewOrder
(
    @customerID int,
    @restaurantID int,
    @cost float,
    @addressID int,
    @ID INT OUTPUT
)
AS
    SET NOCOUNT OFF;

INSERT INTO [Order] 
([customerID], [restaurantID], [cost], [addressID]) 
VALUES (@customerID, @restaurantID, @cost, @addressID);

set @ID = @@IDENTITY

EXEC addOrderStatus @ID, @statusID = 1, @startTime =  SYSDATETIME , @endTime = NULL, @isActive = TRUE

私の問題

私はこの例外を得ました

Error converting data type nvarchar to datetime.

どうすれば解決できますか?

よろしくお願いします

あなたの答えとコメントの後

コードは

DECLARE @startTime DATETIME
SET @startTime = SYSDATETIME
EXEC addOrderStatus @ID, @statusID = 1, @startTime , @endTime = NULL, @isActive = TRUE

これで、このフォームを使用する必要があることがわかりましたname , value

4

2 に答える 2

0

編集 - 間違った部分を削除

最初に変数を宣言し、それにコンテンツを設定してから渡します。

DECLARE @starttime datetime;
DECLARE @statusID int;
DECLARE @endTime datetime;
DECLARE @isActive int;

SET @startTime =  GETDATE();
SET @statusID = 1;
SET @endTime = null;
SET @isActive = 1;

EXEC addOrderStatus @ID, @statusID, @startTime , @endTime, @isActive
于 2013-05-12T13:18:48.563 に答える