2011-10-17 21 views
18

Używam procedura przechowywana do wstawienia niektórych wartości w tabela.ExecuteNonQuery() zwraca -1 zawsze

CREATE PROCEDURE [dbo].[Sp_InsertValue] 
@Val1 as nvarchar(50) 
@Val2 as nvarchar(50) 
as 
BEGIN 
    IF NOT EXISTS(SELECT * FROM @mytable WHERE [email protected]) 
    INSERT INTO @mytable VALUES(@VAL2) 
END 

Używam ExecuteNonQuery() do wywołania tej procedura składowana w ASP.NET przy użyciu C#. Działa dobrze, bez problemów, wstawia wartości, jeśli nie istnieją. Problem polega na tym, że cmd.ExecuteNonQuery() zawsze zwraca -1. Spodziewam się, że jeśli zapis zostanie wstawiony, powinien powrócić 1, a 0, jeśli nie, prawda?

+0

Po uruchomieniu tej procedury w oknie kwerendy serwera sql można zobaczyć komunikat aktualizacji rekordów w okienku wyników? a także spróbuj powrócić wierszy, których dotyczy problem, dodając to do ostatniej linii procedury - Return @@ Rowcount – Lingaraj

Odpowiedz

36

Sprawdź, czy w procedurze przechowywanej nie masz ustawionego "USTAWIENIA NOCOUNT". Spowoduje to zatrzymanie liczby zwracanych wierszy. Dosłownie "NoCount" jest włączony.

Domyślną odpowiedzią zawsze będzie "-1" w tej sytuacji.

Powiązane problemy