Ich arbeite an einer App in C# geschrieben (VS2013). Es ruft eine gespeicherte Prozedur in SQL Server auf. Es gibt eine Menge Eingabeparameter und vier Ausgabeparameter.C# App übergeben seltsame SQL-Param-Werte
Mein Problem ist, dass einer dieser Ausgabeparameter mit einem Wert übergeben wird, den ich nicht festlege.
Dies ist, was SQL Server Profiler als Prozeduraufruf aufzeichnet. Ich habe die tatsächlichen Parameternamen durch generische Namen ersetzt, nur um diese Frage zu stellen.
declare @p51 int
set @p51 = 300000
declare @p52 int
set @p52 = NULL
declare @p53 int
set @p53 = 7776
declare @p54 int
set @p54 = NULL
exec [dbo].[proc_name] (input param list is here)
@outparam1 = @p51 output, @outparam2 = @p52 output,
@outparam3 = @p53 output, @outparam4 = @p54 output
@outparam3/@p53
ist das Problem. Es sollte keinen Wert haben. Es wird mit einem Null-Wert wie folgt erstellt (obwohl als Ausgabeparameter, die nicht notwendig sein soll):
var spParam3 = new SqlParameter("@outparam3", SqlDbType.Int);
spParam3.Value = DBNull.Value;
Es gibt nichts zwischen dieser Codezeile, und die Prozedur Ausführung gespeichert werden, das ist eine andere Werteinstellung für den Parameter. Ich habe einen Breakpoint auf dem ExecuteNonQuery()
Aufruf festgelegt, überprüfte die Parameterliste, und dieser Parameter war immer noch null.
Ich bin völlig verloren auf, warum sein Wert auf 7776 gesetzt wird. Ja, diese Nummer ist ein Code in der gesamten App verwendet, aber ich kann nicht sagen, wie oder warum dieser Parameter auf diesen Wert gesetzt wird.
Alle Gedanken darüber, wo dies geschieht, würden sehr geschätzt werden.
Eine gespeicherte Prozedur in dem SQL-Server. – jdweng
Das ist technisch richtig, aber ich habe es nicht verstanden, bis ich diese Frage gefunden: http://StackOverflow.com/Questions/2198715/Stored-Procedure-Output-Parameters-in-SQL-Server-Profiler – kitchensink108