/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
select (felt) where felt not in(@variabel)~
Fra : Stefan Kristensen


Dato : 20-07-03 16:02

Hej NG.

Jeg har en stored procedure, der ser såddan ud:
SELECT Felt
FROM Tabel
WHERE Felt NOT IN('v1', 'v2', 'v3')
og den virker jo helt fint.

Den vil jeg gerne lave den om, så listen af feltværdier findes i en
variabel:

SELECT Felt
FROM Tabel
WHERE Felt NOT IN(@Liste)

Men jeg kan ikke helt skrue @Liste rigtigt sammen, så det giver det ønskede
resultat.
Kan I hjælpe?

mvh
Stefan



 
 
Jens Gyldenkærne Cla~ (20-07-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 20-07-03 20:25

Stefan Kristensen skrev:

> SELECT Felt
> FROM Tabel
> WHERE Felt NOT IN(@Liste)

Liste skal være en normal strengvariabel med et indhold der passer
til den sql-syntaks du bruger uden variablen (fx "'v1', 'v2'"). Men
for at få sætningen kørt skal du putte resten af sql'en i
anførselstegn og give det til en EXEC-kommando:

CREATE PROC liste_sp (@Liste nvarchar(100)) AS
BEGIN
   EXEC 'SELECT Felt FROM Tabel WHERE Felt NOT IN ('
       + @Liste
       + ')'
END

Den kan du så fx kalde med:

EXEC liste_sp @Liste = '''v1'', ''v2'', ''v3'''
--
Jens Gyldenkærne Clausen
Velkommen hen til Paris International!
Rejse, lede og fortolkere. Jeres oven på- kø levere i Paris
nemlig... (<http://www.paris-tours-guides.com/index_danish.shtml>)

Stefan Kristensen (21-07-2003)
Kommentar
Fra : Stefan Kristensen


Dato : 21-07-03 10:16

> Liste skal være en normal strengvariabel med et indhold der passer
> til den sql-syntaks du bruger uden variablen (fx "'v1', 'v2'"). Men
> for at få sætningen kørt skal du putte resten af sql'en i
> anførselstegn og give det til en EXEC-kommando:
>
> CREATE PROC liste_sp (@Liste nvarchar(100)) AS
> BEGIN
> EXEC 'SELECT Felt FROM Tabel WHERE Felt NOT IN ('
> + @Liste
> + ')'
> END
>
> Den kan du så fx kalde med:
>
> EXEC liste_sp @Liste = '''v1'', ''v2'', ''v3'''

Det var jo sådan det skulle gøres. Takker.
Jeg mener at have læst, at EXEC ikke er så godt rent performance mæssigt?
@Liste bliver sammensat i en dll, der så kalder min proc. Dll'en søger fra
en angivet startnode ned gennem et træ, der godt kan have forgreninger. De
fundne noder lægges i @Liste. Dll'en søger gennem træet vha. en rekursiv
funktion. Er det muligt at lave rekursive funktioner i en proc?

c",)
Stefan



Peter Lykkegaard (21-07-2003)
Kommentar
Fra : Peter Lykkegaard


Dato : 21-07-03 10:31


"Stefan Kristensen" <stk@mad.dk> wrote in message
news:3f1baf42$0$912$d40e179e@nntp02.dk.telia.net...

> Jeg mener at have læst, at EXEC ikke er så godt rent performance mæssigt?

Du kan evt sammenligne med sp_Execute

mvh/Peter Lykkegaard



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408521
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste