Da oracle a sql server 2005 express

mercoledì 21 aprile 2010 - 12.36

Alex.n7 Profilo | Newbie

Ho due db con una tabella identica (movimenti_2) ma che differisce di qualche dato. Io voglio fare un controllo in cui se trovo dei dati diversi, faccio un update su quella riga. Su oracle avrei fatto una piccola procedura come quella seguente (l'ho un pò adattata a sqlserver), però vedo che cosi non funziona, anzi leggendo su internet mi sembra di aver capito che devo utilizzare un approccio completamente diverso. qualche suggerimento?

Grazie


begin
for i in (
SELECT a.*
FROM [prova].[dbo].movimenti_2 a
INNER JOIN [test].[dbo].movimenti_2 b
ON a.idmovimento=b.idmovimento
where a.IDCausale!=b.IDCausale
or a.TipoMovimento!=b.TipoMovimento
or a.Importo!=b.Importo
or a.Data!=b.Data
or a.Valuta!=b.valuta
)
loop
update [test].[dbo].movimenti_2
set IDCausale=i.IDCausale,
TipoMovimento=i.TipoMovimento,
Importo=i.Importo,
Data=i.Data,
Valuta=i.valuta
where
idmovimento=i.idmovimento ;
end loop
end

lbenaglia Profilo | Guru

>Ho due db con una tabella identica (movimenti_2) ma che differisce
>di qualche dato. Io voglio fare un controllo in cui se trovo
>dei dati diversi, faccio un update su quella riga.

Per rispondere adeguatamente avremmo bisogno della struttura delle tabelle coinvolte (CREATE TABLE), alcune righe di prova (INSERT INTO) ed il risultato desiderato.
In mancanza di queste info ho abbozzato la seguente query:

UPDATE T SET IDCausale = Q.IDCausale , TipoMovimento = Q.TipoMovimento , Importo = Q.Importo , Data = Q.Data , Valuta = Q.valuta FROM [test].[dbo].movimenti_2 AS T JOIN ( SELECT a.* FROM [prova].[dbo].movimenti_2 a INNER JOIN [test].[dbo].movimenti_2 b ON a.idmovimento=b.idmovimento where a.IDCausale <> b.IDCausale or a.TipoMovimento <> b.TipoMovimento or a.Importo <> b.Importo or a.Data <> b.Data or a.Valuta <> b.valuta ) AS Q ON T.idmovimento = Q.idmovimento;

>Grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5