Avatar billede fxfever Nybegynder
12. december 2002 - 02:36 Der er 11 kommentarer og
1 løsning

- at sætte en variabel...

Hello!
Jeg har en stored procedure hvor jeg gerne vil tælle med count(*).
Jeg har og så en lokal variabel som jeg gerne vil sætte til resultatet af dennne tælling.
Jeg havde tænkt noget i denne stil:

declare @tabel varchar(100)
declare @tmp int
set @tabel = \'minTabel\'
set @tmp = use minDB execute(\'select count(*) from \' @tabel)

Dette kan jeg dog ikke få lov til - syntax fejl - men hvad gør man så?
Avatar billede fxfever Nybegynder
12. december 2002 - 22:17 #1
...hvad er der af alternativer?
Avatar billede janus_007 Nybegynder
13. december 2002 - 01:35 #2
Jeg kan se at du bruger et dynamisk sql-statement!.
Er det korrekt antaget?
Avatar billede fxfever Nybegynder
13. december 2002 - 02:23 #3
det var det jeg gerne ville, da denne skal ligge inde i en løkke....!
Avatar billede janus_007 Nybegynder
13. december 2002 - 09:43 #4
Hvis dine tabeller holder en nogenlunde ens navngivning, hvilket jeg formoder siden du vil iterere over dem, så kan jeg anbefale:
SELECT rows FROM dbo.sysindexes WHERE name LIKE 'T_%'

Hvor "T_" er det prefix jeg altid opretter mine tabeller med :O)
Avatar billede fxfever Nybegynder
13. december 2002 - 17:41 #5
Det vil ikke løse mit problem!
Mit problem er at jeg ikke må sætte variablen @tmp li' værdien fra udtrykket:
execute('select count(*) from '+ @tabel)
men gerne:
execute('select count(*) from enTabel')
Avatar billede fxfever Nybegynder
13. december 2002 - 17:42 #6
Altså: Hvordan sætter jeg en variabel li' et "dynamsik udtryk"...??
Avatar billede janus_007 Nybegynder
13. december 2002 - 17:57 #7
Du kan ikke trække en variabel med ud af dynamisk sql :O( - Meget latterligt, har selv siddet med det flere gange. Løst dels vha. tmp-tabels, dels vha. at lave hele den sp om til noget dynamisk!

Men er idéen ikke at du skal lave en count i flere forskellige tabeller?? - Prøv at poste nogle tabelnavne som du skal trække udfra :O)
Avatar billede fxfever Nybegynder
13. december 2002 - 18:42 #8
tja - altså:
jeg har en tabel som indeholder tabelnavne på de tabeller der skal køres en count på... således, skal en løkke køre denne tabel igennem, hente et tabelnavn ud, køre en count(*) på den tabel og gemme det i tabellen igen.
Avatar billede fxfever Nybegynder
13. december 2002 - 18:43 #9
Det var dog "træls"!
Avatar billede janus_007 Nybegynder
15. december 2002 - 18:46 #10
Hvis det er tilfældet, så kan du da sagtens bruge denne her:


SELECT rows FROM dbo.sysindexes WHERE name LIKE 'tabelnavn'

Og den er også meget mindre performance krævende!

Du skal lave en cursor for at loope igennem den tabel hvor dine tabelnavne ligger, men det er alt sammen såre simpelt - og et andet spørgsmål ;O)
Avatar billede fxfever Nybegynder
08. maj 2003 - 23:47 #11
Der lukkes...
Avatar billede janus_007 Nybegynder
09. maj 2003 - 09:09 #12
Du skal ikke lukke uden pointgivning! Mit svar er korrekt, afprøvet mange gange som en "normal" løsning til din type opgave :O)

Vær rar at åbne igen!
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



IT-JOB

Cognizant Technology Solutions Denmark ApS

Sr. Test Analyst

MAN Energy Solutions

Principal Expert DevOps

Netcompany A/S

Test Specialist