2011-12-01 4 views
9

Come posso recuperare la riga appena inserita?Seleziona le righe appena inserite

INSERT INTO LETTRE_VOIT 
select rsVoit.NOID, NO_ORDRE, rsOrdre.CODE_DEST, rsOrdre.MODAL_MODE, rsOrdre.MODAL_PORT, 
CASE rsOrdre.MODAL_PORT 
      WHEN 'false' THEN 'D' 
      ELSE 'P' 
     END, 
rsOrdre.LIVRS_EXPRS, 
CASE rsOrdre.LIVRS_EXPRS 
      WHEN 'false' THEN 'L' 
      ELSE 'E' 
     END, 
    rsOrdre.ENLEV_UNITE, LIBELLE, NBR_COLIS,POID,ENLEV_CREMB,ENLEV_DECL 
from ORDRE rsOrdre 
inner join 
(
    select CODE_DEST,MODAL_MODE, MODAL_PORT, LIVRS_EXPRS,ENLEV_UNITE, ROW_NUMBER() over (order by CODE_DEST) as NOID 
    from ORDRE 
    group by CODE_DEST,MODAL_MODE,MODAL_PORT,LIVRS_EXPRS,ENLEV_UNITE 
) rsVoit on rsVoit.CODE_DEST = rsOrdre.CODE_DEST and rsVoit.MODAL_MODE = rsOrdre.MODAL_MODE 
and rsVoit.MODAL_PORT = rsOrdre.MODAL_PORT and rsVoit.LIVRS_EXPRS = rsOrdre.LIVRS_EXPRS 
and rsVoit.ENLEV_UNITE = rsOrdre.ENLEV_UNITE 

LEFT JOIN T_UNITE ON rsOrdre.ENLEV_UNITE = T_UNITE.NOID 
WHERE (STATUT_ORDRE = 3) AND IS_PRINT = 'false' AND (TRANSPORTEUR IN (SELECT ParsedString From dbo.ParseStringList(@Trans))) 
order by rsVoit.NOID, NO_ORDRE 

SELECT * FROM LETTRE_VOIT WHERE ??? 

Ad esempio:

ho inserito 2, esso ritorno 2

e poi inserito 3, voglio restituire 3 invece di 5 righe.

Grazie in anticipo.

Stev

PS: Può essere che ho bisogno di usare una stored procedure?

+2

che RDBMS? ..... –

+0

SQL Server 2008 – user609511

risposta

16

Io non sono sicuro al 100% che cosa esattamente si vuole indietro .... ma SQL Server ha una clausola OUTPUT che possono roba uscita da INSERT e UPDATE e DELETE dichiarazioni:

INSERT INTO dbo.YourTable(col1, col2, ..., colN) 
OUTPUT Inserted.Col1, Inserted.IDCol, Inserted.Col17 
VALUES(val1, val2, ...., valN) 

Qui, si' reinserendo valori e valori inseriti per IDCol (ad es. colonna INT IDENTITY), Col1 e Col17.

Se solo ripristinare i risultati nella griglia in Mgmt Studio è sufficiente, quindi utilizzare la clausola OUTPUT! Per saperne di più about the OUTPUT clause on Books Online

+1

Grazie che è esattamente quello che voglio. – user609511

2

Come risparmiare i record in una variabile prima di inserirli o aggiungere un campo data e recuperarli per data?

+0

non male idee, ci penserò – user609511

0

Se si utilizza SQL Server

E sai quante riga inserita poi passare attraverso

SELECT top 2 * FROM LETTRE_VOIT order by primaryKeyId desc 

mettere il numero di riga inserita in luogo di 2.

Si può aiutare, se si conosce il numero di righe inserite, e quindi è in grado di fornire i numeri con la parte superiore parola chiave

+0

non male idee, il problema non so quante righe inserite. ciò significa che ho fatto a SQL: 1. per inserire e restituire quante righe inserite 2. SELEZIONA TOP – user609511

+0

Quindi passare, @coconut risposta – subodh

+0

Questo non funzionerà a meno che non si sappia esattamente quante righe si sta inserendo (puo ' t usare una variabile in TOP). – rainabba