Fehler beim konvertieren von Datentyp varchar in numeric. SQL Server
Ich bin das schreiben von Daten auf den Sql-Server-Datenbank.
Wenn Daten geschrieben werden, wird ein trigger ausgeführt wird.
TRIGGER
ALTER TRIGGER Alert ON records AFTER INSERT AS
BEGIN
DECLARE @tempmin decimal = 0
DECLARE @current_max_idAlarm int = (SELECT MAX(IdAlarm) FROM alarms)
DECLARE @maxidAlarm int
DECLARE @temp decimal = (SELECT s.lim_inf_temp from sensores s JOIN inserted i ON s.idSensor=i.idSensor )
-- Insert into alares from the inserted rows if temperature less than tempmin
SET IDENTITY_INSERT alarmes On
INSERT alarmes (IdAlarm, desc_alarm,date, idRecord)
SELECT
ROW_NUMBER() OVER (ORDER BY i.idRecord) + @current_max_idAlarm, 'Temp Error', GETDATE(), i.idRecord
FROM
inserted AS i
WHERE
i.Temperature < @temp
end
EINFÜGEN
insert into record values ('2014-05-26' ,'14:51:47','Sensor01','---','48.6','9.8');
Immer wenn ich versuche zu erfassen diese Art von Daten: '---'
Gibt die folgende Fehlermeldung:
Msg 8114, Level 16, State 5, Procedure Alert, Line
Error converting data type varchar to numeric.
Ich weiß, es ist in decimal-Typ (DECLARE @temp decimal - TRIGGER), aber bewegt, um den Typ varchar auslösen nicht mehr funktioniert korrekt.
Nicht kann mir jemand helfen, diesen Fehler beheben, bitte?
Danke an Euch alle.
Warum tun Sie einfügen möchten
Vielen Dank für die Antwort.Denn ich bin der Erfassung der Daten durch einen parser aus einer txt-Datei. Und manchmal ein paar Daten in diesem format ---
Können Sie mir helfen @meda ??
---
? Sie erkennen, dass Sie auskommentieren?Vielen Dank für die Antwort.Denn ich bin der Erfassung der Daten durch einen parser aus einer txt-Datei. Und manchmal ein paar Daten in diesem format ---
Können Sie mir helfen @meda ??
InformationsquelleAutor user3320956 | 2014-05-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie versuchen, fügen
---
innerhalb einer numeric-Spalte kann man einfach nichts tun.Haben Sie vor allem 2 Optionen:
Das ist, weil Sie müssen, wandeln Sie die variable auf den richtigen Datentyp, wenn Sie den Vergleich: ich.Temperatur < CAST(@Temp ALS DEZIMALZAHL). Jedenfalls von dem, was Sie in der Frage, der Fehler scheint zu sein, auf der Wendeplatte. Sie versuchen zu konvertieren --- wie numerisch, und das ist nicht möglich. Alle anderen Werte funktioniert, weil der implizite Konvertierungen.
Das einfügen läuft wunderbar, wenn ich nicht über einen trigger. Also es wird gesagt, dass das problem in der trigger-Anweisung. Ich habe versucht, was du gesagt hast, aber gibt mir die gleiche Fehlermeldung :S
Tut mir Leid, aber es scheint, ich kann dir nicht helfen 🙁
trotzdem danke 😉
InformationsquelleAutor mordack550