2016-08-04 6 views
0

Ich habe eine gespeicherte Prozedur, die eine XML-Datei erstellt. Wenn ich es laufen lasse, erhalte ich einen FehlerFehler in der gespeicherten Prozedur, aber kein Fehler beim manuellen Ausführen

Fehler bei der Konvertierung, wenn der varchar Wert ‚einen Text hier‘ Umwandlung

int Wenn ich in SSMS den gleichen Code in das Abfragefenster setzen und ausführen es funktioniert gut - kein Fehler.

Kann mir jemand sagen, warum könnte das passieren? Das Verfahren ist lang genug, um es hier zu veröffentlichen, es ist hauptsächlich eine riesige Auswahl mit vielen Gewerkschaften und Joins.

Vielen Dank!

+0

scheint Ihre Zeichenfolge ist keine gültige Nummer – lordkain

+0

In der Tat ist es nicht. Aber warum wird bei der manuellen Ausführung kein Fehler ausgegeben? – user6678202

+0

Die Fehlermeldung ist ziemlich klar. Sie verwenden offensichtlich eine Zeichenfolge und behandeln sie wie eine Zahl. Wahrscheinlich ist es eine implizite Konvertierung. Vielleicht könnten wir Ihnen zumindest helfen, wenn Sie das Verfahren teilen könnten. Wie es jetzt sitzt, gibt es keine Chance, dass jemand helfen kann. –

Antwort

0

Irgendwo in einer der Spalten in Ihrer Verknüpfung wird ein Varchar mit einer Ganzzahl verglichen, und mindestens einer der Varchar-Werte ist keine Ganzzahl. So

versuchen, den folgenden Test:

select * 
    from table 
    where myCol NOT LIKE '%[^0-9]%' 

und vielleicht

select * 
    from table 
    where CONVERT (bigint, myCol) NOT BETWEEN -2147483648 AND 2147483647 

schütteln den Baum und sehen, was abfällt.