Ich habe eine gespeicherte Prozedur, die einen Parameter akzeptiert.
CREATE PROCEDURE [dbo].[Stored_Proc_Name] (@ParamID NVARCHAR(255) = NULL)
Ich rufe diese gespeicherte Prozedur auf und übergebe eine eindeutige Kennung, so etwas;
EXEC [Stored_Proc_Name] 'a6ed99c1-29c8-43f4-9e3a-0065e6dc7fc1'
Die gespeicherte Prozedur führt ein wenig XML-Verarbeitung durch und gibt eine Ergebnismenge zurück. Dies ist ziemlich einfach.
Für einige Parameter, die übergeben werden, wird ein Typkonvertierungsfehler angezeigt.
Msg 8114, Level 16, State 5, Procedure Stored_Proc_Name, Line 0
Error converting data type nvarchar to int.
Ich dachte anfangs, dass dies ein Problem mit den Daten ist, aber das Problem löst sich von selbst, wenn ich eine lokale Variable innerhalb der gespeicherten Prozedur wie folgt deklariere und dann diese lokale Variable anstelle des Parameters verwende. Die einzigen Stellen, an denen dieser Parameter verwendet wird, sind WHERE
Klauseln in meinem gespeicherten Prozess.
CREATE PROCEDURE [dbo].[Stored_Proc_Name] (@ParamID NVARCHAR(255) = NULL)
AS
DECLARE @localID nvarchar(255)
SET @localID = @ParamID
Das Problem ist behoben und der Vorgang läuft einwandfrei.
Irgendwelche Ideen zum nächsten Schritt der Untersuchung oder etwas Offensichtliches, das ich verpasst habe?
Aktualisieren:
Bei weiteren Untersuchungen war dies ein Problem mit einem XML-Attribut, bei dem [1] fehlte. Es scheint also versucht zu haben, mehrere Attribute zu konvertieren, was den Fehler verursacht hat. Ich untersuche derzeit, wie es mit der Variablen behoben wurde, und werde es aktualisieren, sobald ich eine vernünftige Antwort habe. Ich werde die Antwort als akzeptiert markieren, damit jemand das Kopfgeld bekommt.