2010-12-06 9 views
1

ich mit einem gewissen Zustand einen SP habe wie dieseauf einen Rückgabewert von gespeicherter Prozedur einstellen, wenn die Bedingung

IF NOT EXISTS (Select * from bom_steel where fpart = @fpart) 
     BEGIN 
      INSERT INTO bom_steel 
      VALUES (@fPart,@fL,@fH,@fW,@fDesc) 
     END 
    ELSE if(Select * from Employee where Empid = @empid) 
     BEGIN 
      Return ‘1’ 
     END 
Else 
Begin 
UPDATE bom_steel 
      SET [email protected], [email protected], [email protected] 
      where Empid [email protected] empid 
end 

when this condition passes , I am returning an value as 1 
ELSE if(Select * from Employee where Empid = @empid) 
     BEGIN // here i will to be doing any operation(DML) .so i want to just return an value as '1'     
       Return ‘1’ 
     END 

In meinem Code hinter
Hier cmd ist SqlCommand

Int intcount= cmd.ExecuteNonQuery(); 

Hier in diesem Zustand es retourniert immer einen Wert als -1;

Auch setze ich einen Rückgabewert als ‚1'it noch jemand einen Wert als -1

kann, ist returingf mir sagen, was soll ich tun, um einen Wert als 1 von dort

zurückzukehren

jede Hilfe wäre toll danke

Antwort

1

Try

Int intcount= cmd.ExecuteScalar(); 

statt

Int intcount= cmd.ExecuteNonQuery(); 

ExecuteNonQuery() tun gibt nur die Anzahl der betroffenen Zeilen.

Entfernen Sie außerdem die einfachen Anführungszeichen im Rückgabewert, wie unten in Andrew angegeben, oder ändern Sie stattdessen den Typ von intCount in string.

1

Sie versuchen, einen Zeichenwert, nicht int zurückgeben. Versuchen Sie, die einfachen Anführungszeichen zu entfernen.

Auch was InSane sagte; ExecuteNonQuery() gibt die Anzahl der betroffenen Zeilen zurück. Obwohl ich mich über dein Beispiel wundere; Warum sollte das -1 zurückgeben?

+0

+1: Beat mich dazu. –

+0

@Ardman - Es ist an der Zeit, dass ich * irgendjemanden * zu einem einfachen geschlagen habe! Ich wurde den ganzen Morgen geschlagen. hehe! –

+0

Ich bin interessiert zu wissen, ob die "return 1" in der Prozedur diesen Wert an den Aufrufer zurückgeben wird, wie BOL angibt: "Bei UPDATE, INSERT und DELETE -Anweisungen ist der Rückgabewert die Anzahl der betroffenen Zeilen Für alle anderen Arten von Anweisungen ist der Rückgabewert -1. " Dies scheint zu implizieren, dass selbst eine "Rückkehr" -Anweisung zu einem -1 zurück zum Client führen würde. – Tony

Verwandte Themen