Ich versuche, dem Beispiel hier zu folgen, aber etwas stimmt nicht mit meiner Temp-Tabelle. bitte helfen? https://technet.microsoft.com/en-us/library/bb510625.aspxKonvertierung fehlgeschlagen beim Konvertieren von Datum und/oder Uhrzeit aus Zeichenkette. SQL MERGE
erstellen mein 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
- Erstellen Sie eine temptable für 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
- Testen Sie das Verfahren und die Ergebnisse zurück.
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'
Fehlermeldung:
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.
Das Problem ist damit: 'OUTPUT gelöscht. *, $ Aktion, eingefügt. * INTO #MyTempTable;' Ihre 'OUTPUT' stimmt nicht mit der Definition von' # MyTempTable' überein – Nicarus