Avatar billede badal Nybegynder
16. februar 2005 - 16:25 Der er 7 kommentarer og
1 løsning

stored procedure der løser tre opgaver

jeg vil gerne lave en stored procedure der henter data fra en tabel.
SELECT Id FROM tblPerson WHERE postcode = 2650

Og derefter bruger id'erne fra ovenstående sql sætning til at hente en række names frem. ved ik om det kan lade sige gøre på denne måde. Man kan sagtens lave det i koden(c#) men jeg mener at det går stærkere hvis man gør det inde i en stored procedure.

SELECT name FROM customer
WHERE    (Id = id.1) OR (id = id.2) OR (id = id.3) OR (id = id.4)

På baggrund af ovenstående name skal jeg slette Data fra en tredie tabel hvor navnet indgår.
foreach (name)
DELETE FROM Temp WHERE name = Name_FraovenståendeSqlsætning AND id = '5'

Kan det klares med en stored procedure eller skal jeg lave det i c#?+
Avatar billede arne_v Ekspert
16. februar 2005 - 16:58 #1
Kan du ikke bare bruge:

DELETE FROM temp WHERE name IN (SELECT name FROM customer WHERE id IN (SELECT id FROM tblPerson WHERE postcode = 2650)) AND id='5'

?
Avatar billede ldanielsen Nybegynder
16. februar 2005 - 17:23 #2
arne_v har ret.

Men hvis du læser lidt på CURSOR i Books Online vil du se at du godt kan loop'e gennem et dataset, det var måske det du efterlyste.
Avatar billede badal Nybegynder
16. februar 2005 - 18:58 #3
hmm ja nu har ikke lige fået testet det ... men sletter ovenstående sql sætning ikke kun 1 række ?
Avatar billede arne_v Ekspert
16. februar 2005 - 19:13 #4
Ikke nødvendigvis - det afhænger af data
Avatar billede ldanielsen Nybegynder
16. februar 2005 - 21:48 #5
Hvis du tager arne_v's sætning "indefra", vil du se at den i rækkefølge udfører netop de tre trin du ønskede. Den vil slette alle rækker i temp der opfylder kravene.
Avatar billede badal Nybegynder
16. februar 2005 - 23:12 #6
ldanielsen... ja nu kan jeg godt se det..det ser uden tvivl rigtig smart ud at man kan lave det i en sætning.

Arne.. hvis du kan komme med et svar vil du få point.

og et side side spørgsmål. Hvis man nu har et array i C# og gerne vil indsætte et variabelt antal rækker i en tabel kan en stored procedure modtage en "array"??
Avatar billede arne_v Ekspert
16. februar 2005 - 23:13 #7
svar
Avatar billede arne_v Ekspert
16. februar 2005 - 23:15 #8
Nej - det mener jeg ikke.

SqlDbType indeholder ikke arrays.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester