2013-10-15 14 views

risposta

28

È possibile utilizzare variabile del server @@ROWCOUNT immediatamente dopo la query di inserimento per verificare numero di righe interessate dall'operazione di inserimento.

declare @fName varchar(50) = 'Abcd', 
     @lName varchar(50) = 'Efgh' 
INSERT INTO myTbl(fName,lName) values(@fName,@lName) 

PRINT @@ROWCOUNT --> 0- means no rows affected/nothing inserted 
       --> 1- means your row has been inserted successfully 

Per il vostro requisito, è possibile utilizzare una dichiarazione Case (come da commento):

--If you need @check as a bit type please change Int to bit 
DECLARE @check Int = CASE WHEN @@ROWCOUNT = 0 THEN 1 ELSE 0 END 
+0

Grazie per aver risposto, ho corretto la mia domanda se è stata inserita correttamente ho bisogno di impostare @check = 0 – GeoVIP

4

È necessario utilizzare @@ROWCOUNT

restituisce il numero di righe interessate dall'ultima dichiarazione . Se il numero di righe è superiore a 2 miliardi, utilizzare ROWCOUNT_BIG.

@@ ROWCOUNT è sicuro per l'ambito e la connessione.

Infatti, si legge solo l'ultimo conteggio di riga dell'istruzione per tale connessione e ambito .

È possibile utilizzare @@ ROWCOUNT in SQL Server in modo sicuro anche quando è presente un trigger nella tabella di base. Il trigger non distorce i risultati; Otterrai quello che ti aspetti. @@ ROWCOUNT funziona correttamente anche quando NOCOUNT è impostato.

in modo da query deve essere:

declare @fName varchar(50), @lName varchar(50), @check tinyint = 0 
... 
INSERT INTO myTbl(fName,lName) values(@fName,@lName) 
if @@ROWCOUNT>0 
    set @check = 1 
0

In SQL-Sever è possibile utilizzare la clausola OUTPUT per controllare se i valori vengono inseriti con successo. Seguendo interrogazione


declare @fName varchar(50),@lName varchar(50) 

INSERT INTO myTbl(fName,lName) OUTPUT inserted.* values(@fName,@lName) ; 

Se i valori sono inseriti mostrerà emettere valori inseriti. È inoltre possibile memorizzare questi valori in una nuova tabella.

+0

Per informazioni dettagliate sulla clausola OUTPUT andare su [OUTPUT] (http://technet.microsoft.com/en-us/ biblioteca/ms177564.aspx) – genius

Problemi correlati