2016-09-05 3 views
0

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.

+1

Eine gespeicherte Prozedur in dem SQL-Server. – jdweng

+0

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

Antwort

0
@[email protected] 

@ p53 = 7776

das ist, warum der Wert, den Sie in der Tabelle erhalten/Insert ist 7776

+0

Was ich don Ich verstehe nicht, woher das kommt. Ich kann nirgendwo im Prozess sehen (den gespeicherten Prozeduraufruf einstellen, die Parameter einstellen, den Anruf ausführend), wo ich alles den Wert von 7776 zuordne. – kitchensink108