Domanda

I dati nella mia DataTable sono come

ID ContactName1  Designation1 ContactName2 Designation2
1  A             dummy        B            sam 

La struttura della tabella della mia tabella è

ID ContactName Designation

Sto passando i valori nella procedura memorizzata come:

@ContactName1
@Designation1

@ContactName2
@Designation2

Voglio una singola istruzione insert per inserire i record.

Come posso raggiungere questo obiettivo?

È stato utile?

Soluzione

Supponendo che la chiave primaria dell'ID sia impostata sull'incremento automatico e la tabella abbia tre campi:

INSERT INTO DataTable (ContactName, Designation) VALUES 
    (@ContactName1, @Designation1), 
    (@ContactName2, @Designation2);

Come per l'ID effettivo, se non lo hai sull'incremento automatico, che a giudicare dal commento sulla risposta di Ivan, non puoi, puoi effettivamente ottenerlo usando l'istruzione MAX ():

SELECT MAX(ID) AS max_id FROM DataTable

Altri suggerimenti

Dato che si trova in una procedura memorizzata, perché ti importa se si tratta di una o due istruzioni INSERT? Chiaramente, due affermazioni sono banali.

Alcuni DBMS consentono di elencare più clausole di valori in un singolo INSERT (@Ivan lo suggerisce):

INSERT INTO Table(ID, ContactName, Designation)
    VALUES(1, @ContactName1, @Designation1)
    VALUES(1, @ContactName2, @Designation2);

Non sono sicuro se sia necessaria una virgola tra gli elenchi di valori. Inoltre, non sono chiaro se i due record in Tabella possono avere lo stesso ID, né come viene determinato l'ID - questo è probabilmente qualcosa di auto-incremento e DBMS diversi lo fanno anche in modo diverso.

Se il tuo DBMS non supporta più clausole VALUES in una singola istruzione INSERT, ti conviene accettare due istruzioni INSERT. Se l'atomicità è un problema, puoi prendere in considerazione le transazioni, anche se questa è solo una parte di una transazione più grande, ROLLBACK in caso di errore, in particolare, sarebbe un problema. Se il tuo DBMS supporta SAVEPOINTS, la procedura potrebbe stabilire un punto di salvataggio all'entrata e eseguire il commit o il rollback al punto di salvataggio all'uscita.

INSERISCI NEI VALORI TABLENAME (DARE VALORE SECONDO IL NUMERO E L'ORDINE SEPARATI DALLA COMMA)

EX: -

INSERISCI SU VALORI TABLENAME (1, 'INDIA')

ECCO DUE COLONNE S.N. & Amp; PAESE

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top