0
私はここの例に従おうとしていますが、私の一時テーブルに何か問題があります。助けてください? https://technet.microsoft.com/en-us/library/bb510625.aspx文字列から日付および/または時刻を変換するときに変換に失敗しました。 SQL MERGE
私SPROC
CREATE PROCEDURE gssenv.InsertMorphoDevice
@Name nvarchar(MAX),
@Description nvarchar(MAX),
@Location nvarchar(MAX),
@AssetID nvarchar(MAX),
@TimeZone nvarchar(MAX),
@Hostname nvarchar(50),
@Port int,
@Status int,
@ID nvarchar(50)
AS
BEGIN
SET NOCOUNT ON;
MERGE gssenv.Morpho AS target
USING (SELECT @ID,@Name,@Description,@Location,@AssetID,@TimeZone,@Hostname,@Port,@Status) AS source (ID,Name,Description,Location,AssetID,TimeZone,Hostname,Port,Status)
ON (target.ID = source.ID)
WHEN MATCHED THEN
UPDATE
SET Hostname = source.Hostname,
Name = source.Name,
Description = source.Description,
Location = source.Location,
AssetID = source.AssetID ,
Port = source.Port,
Status = source.Status,
ID = source.ID
WHEN NOT MATCHED THEN
INSERT (ID,Name,Description,Location,AssetID,TimeZone,Hostname,Port,Status)
VALUES (source.ID,source.Name,source.Description,source.Location,source.AssetID,source.TimeZone,source.Hostname,source.Port,source.Status)
OUTPUT deleted.*, $action, inserted.* INTO #MyTempTable;
END;
GO
を作成する - OUTPUT
CREATE TABLE #MyTempTable
(ExistingDescription nvarchar(MAX),
ExistingName nvarchar(MAX),
ExistingLocation nvarchar(MAX),
ExistingAssetID nvarchar(MAX),
ExistingHostname nvarchar(MAX),
ExistingTimeZone nvarchar(MAX),
[ExistingID] nvarchar(MAX),
ExistingPort int,
ExistingStatus int,
ExistingDate datetime,
ActionTaken nvarchar(10),
NewDescription nvarchar(MAX),
NewName nvarchar(MAX),
NewLocation nvarchar(MAX),
NewAssetID nvarchar(MAX),
NewHostname nvarchar(MAX),
NewTimeZone nvarchar(MAX),
[NewID] nvarchar(MAX),
NewPort int,
NewStatus int,
NewDate datetime
);
GO
ためTEMPTABLEを作成します - 手順をテストし、結果を返します。
EXEC gssenv.InsertMorphoDevice @Name = 'ABC', @Description = 'Name',@Location = 'test',@AssetID= 'NEWASSSETID', @Hostname = 'MPK40-PSEC-BIO-0024AE01B5C5.thefacebook.com',
@Port = '1234',@Status =2,@TimeZone = 'tzsdf', @ID = '2E4F5071-EAD7-4E22-8AB7-36AB20C2A33A'
エラーメッセージ:ここに
Msg 241, Level 16, State 1, Procedure InsertMorphoDevice, Line 15 [Batch Start Line 74]
Conversion failed when converting date and/or time from character string.
問題は次のとおりです: 'OUTPUT deleted。*、$ action、inserted。* INTO #MyTempTable;'あなたの 'OUTPUT'は'#MyTempTable'の定義と一致しません – Nicarus