10. december 2004 - 21:03Der er
11 kommentarer og 2 løsninger
Samme subquery skal bruges flere gange
Hej,
Jeg står og skal bruge en subquery flere gange i forbindelse med nogle updates/deletes, og ville vide om man ikke fx kan deklarere en variabel og sætte den lig denne subquery fx, så man er fri for at skrive den flere gange:
DECLARE @MinQuery (SELECT --- FROM --- WHERE ---)
DELETE FROM ---- WHERE felt IN @MinQuery UPDATE --- SET ---- WHERE felt IN @MinQuery
osv. Kan det lade sig gøre? (jeg er forholdsvis ny i SQL :)
Er din query kompleks nok, kan du overveje et view eller en funktion. Men i 9 ud af 10 tilfælde er en smule redundans i ens sql at foretrække, det er simplere at styre.
I øvrigt bør overveje at skrive hele din delete og update ind som stored procedures fremfor at kalde dem som ad hoc sql.
create procedure deletesomething (@id ) as begin set nocount on delete from dbo.MyTable as M where m.id = @id end go
Den er ikke særlig tung. Det var nu mere for at undgå, at skulle lave evt. ændringer flere steder.
Kan jeg ikke lave en stored procedure eller en funktion, som returnerer resultatet af subquery'en? så behøver jeg kun lave mine ændringer i den pågældende stored procedure/funktion.
Og som sagt - så er jeg ret ny, så jeg kan godt bruge nogle eksempler :)
create proc getorderID @orderID INT as declare @sql varchar(8000) set @sql = 'select * from orders where orderID=' + cast(@orderID as varchar(10)) exec(@sql) exec(@sql) go
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.