15. februar 2004 - 21:10Der er
7 kommentarer og 2 løsninger
#Temp tabeller og Stored Procedure
Hvordan kan jeg benytte en midlertidig table, som jeg opretter på følgende måde: Jeg er nødt til at oprette tabellen på den måde, da antallet af variabler i tabellen, er forskellig hver gang SP´en bliver afviklet.
SP´en?? kan ikke se den oprettede tabel. Jeg ved ikke om det er fordi SP´en "sp_executesql" reelt set er ejeren af tabellen der oprettes? Hvis jeg tilføjer: Set @TableSQL = @TableSQL + 'select * from Result' inden exec sp_executesql @TableSQL, så kan man godt se tabellen.
Anyway, håber der sidder et klogt hovede derude som kan hjælpe.
Prøv venligst jeres svar af, inden i begynder at gætte. På forhånd tak.
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Dit problem er at #temp er afhængig af den process/forbindelse der opretter den. Når du gør det dynamisk gennem sp_executesql så forsvinder den ud af scope så snart den er oprettet..
Du kunne evt. bruge en global temp tabel i stedet (##temp), men det kan evt. give dig andre problemer hvis fx. du har behov for at have en kopi af tabellen med samme navn liggende flere gange.
Et alternativ kunne derfor være at oprette tabellen manuelt i tempdb prefixet med spid og så slette den når du er færdig. Kan stadig gøres vha. dynamisk SQL.
Det lyder til du har fat i noget af det rigtige. Din konklusion mht. at temp tabellen forsvinder ud af scopet, er også det jeg kom frem til.
Kan du ikke uddybe dit forslag nærmere. Jeg kan lige beskrive den situation som jeg står i:
Min temp-tabel skal retunere en hulens masse beregninger, basseret på nogle inputs. Jeg kan ikke have at 2 brugere kan risikere at få resultatet fra eksakt samme temp tabel retur på samme tid. Jeg ved ikke om dit svar tager højde for det? Idéen med #temp tabellen er netop, at der oprettes en unik #temp tabel for hver enkelt bruger.
Pointene går til dig, hvis du kan gennemskue min problemstilling, og komme med resultatet
Mht.: Du kunne evt. bruge en global temp tabel i stedet (##temp), men det kan evt. give dig andre problemer hvis fx. du har behov for at have en kopi af tabellen med samme navn liggende flere gange.
Svar til det: Nej, tabellen skal slettes umiddelbart efter at resultatet bliver selected.
##TEMP virker tilsynladende, men hvor "global" er den? Er den unik for den enkelte bruger? eller vil alle kunne accesse den så længe den er oprettet på serveren?
Zedios, jeg mangler nogen gange en SQL-haj på et højt plan til at sparre med. Hvis du er på messenger, kan du så ikke tilføje mig på din liste?
Jeg skal nok lade være med at overfuse dig med spg. :o)
Du kan finde mig på: peter.schmidt@interwaregroup.com
Synes godt om
Ny brugerNybegynder
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.