/ 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
[MSSQL] problem med DECLARE Cursor
Fra : Lars Hoffmann


Dato : 12-01-05 12:54

Jeg sidder fast midt i en Stored Proc
Det jeg prøver er at lave en simpel SQL sætning hvor WHERE-del kun skal
eksistere hvis variablen @origen er forskellig fra ''.

Det vil MSSQL ikke være med til. Jeg får en "error near WHERE"

Min kode snippet ser således ud:


DECLARE Origenes CURSOR for
SELECT ID, TB_LKP_ORIG_CONTACTO.DescripcionCompleta
FROM TB_LKP_ORIG_CONTACTO
IF (@origen <> '')
BEGIN
WHERE AND TB_LKP_ORIG_CONTACTO.DescripcionCompleta LIKE '%@origen%'
END   



Nogen der har en kreativ løsning til dette?
Med venlig hilsen
Lars Hoffmann


--
Posted via Mailgate.ORG Server - http://www.Mailgate.ORG

 
 
Casper Bang (12-01-2005)
Kommentar
Fra : Casper Bang


Dato : 12-01-05 13:00

> WHERE AND TB_LKP_ORIG_CONTACTO.DescripcionCompleta LIKE '%@origen%'

prøv med

WHERE AND TB_LKP_ORIG_CONTACTO.DescripcionCompleta LIKE '%'+@origen+'%'



Lars Hoffmann (12-01-2005)
Kommentar
Fra : Lars Hoffmann


Dato : 12-01-05 13:38

"Casper Bang" <webmaster_fjerndette@fjerndette_secretsofwar.net> wrote
in message news:41e5115d$0$36683$edfadb0f@dread15.news.tele.dk

> > WHERE AND TB_LKP_ORIG_CONTACTO.DescripcionCompleta LIKE '%@origen%'
>
> prøv med
>
> WHERE AND TB_LKP_ORIG_CONTACTO.DescripcionCompleta LIKE '%'+@origen+'%'


Nej den går ikke. Det er jo ikke en strengvariable. Problemet ligger nok
mere i at bruge en IF-sætning, men jeg må da indrømme at jeg heller ikke
er sikker på det.
Med venlig Hilsen
Lars Hoffmann


--
Posted via Mailgate.ORG Server - http://www.Mailgate.ORG

Casper Bang (12-01-2005)
Kommentar
Fra : Casper Bang


Dato : 12-01-05 22:21

> Nej den går ikke. Det er jo ikke en strengvariable. Problemet ligger nok
> mere i at bruge en IF-sætning, men jeg må da indrømme at jeg heller ikke
> er sikker på det.

Ahh, tror måske jeg ved hvad du mener... mindes man kan gøre noget ala:

DECLARE @SQL nvarchar(100)
SET @SQL = 'SELECT ID, TB_LKP_ORIG_CONTACTO.DescripcionCompleta FROM
TB_LKP_ORIG_CONTACTO'
IF (@origen <> '') SET @SQL = @SQL + 'WHERE AND
TB_LKP_ORIG_CONTACTO.DescripcionCompleta LIKE ''%@origen%'''
EXECUTE @SQL

Jeg håber jeg har forstået spørgsmålet korrekt nu :)



Casper Bang (12-01-2005)
Kommentar
Fra : Casper Bang


Dato : 12-01-05 22:28

[SNIP]

Ok, fandt lige ud af at mt forslag var nogenlunde det samme som du selv kom
frem til :p
Men her er et andet forslag, som måske kan bruges - navne og felttyper i
tabellerne er ikke korrekte, men burde nemt kunne rettes til.

DECLARE @SQL nvarchar(100)
SET @SQL = 'SELECT ID, TB_LKP_ORIG_CONTACTO.DescripcionCompleta FROM
TB_LKP_ORIG_CONTACTO '
IF (@origen <> '') SET @SQL = @SQL + 'WHERE AND
TB_LKP_ORIG_CONTACTO.DescripcionCompleta LIKE ''%@origen%'''

create table #dummy (objectid varchar(15), antal integer) --ret lige til
insert into #dummy EXECUTE @SQL

DECLARE Origenes CURSOR for
SELECT * FROM #dummy --ret lige til



Lars Hoffmann (17-01-2005)
Kommentar
Fra : Lars Hoffmann


Dato : 17-01-05 09:35

"Casper Bang" <webmaster_fjerndette@fjerndette_secretsofwar.net> wrote

> DECLARE Origenes CURSOR for
> SELECT * FROM #dummy --ret lige til

Been there, done that, det virkede heller ikke. Jeg brugte til sidst den
mindre elegante men ganske effektive løsning:


IF (@origen <> '')
BEGIN
DECLARE Origenes CURSOR for
SELECT ID, TB_LKP_ORIG_CONTACTO.DescripcionCompleta
FROM TB_LKP_ORIG_CONTACTO
WHERE AND TB_LKP_ORIG_CONTACTO.DescripcionCompleta LIKE '%@origen%'
END   
ELSE
BEGIN
DECLARE Origenes CURSOR for
SELECT ID, TB_LKP_ORIG_CONTACTO.DescripcionCompleta
FROM TB_LKP_ORIG_CONTACTO
END   

Den brokker sig godt nok over at jeg bruger det samme variabelnavn to
gange, men det er kun en warning - scriptet virker efter hensigten.
Med venlig hilsen og tak for hjælpen
Lars Hoffmann





--
Posted via Mailgate.ORG Server - http://www.Mailgate.ORG

Bertel Lund Hansen (12-01-2005)
Kommentar
Fra : Bertel Lund Hansen


Dato : 12-01-05 13:03

Lars Hoffmann skrev:

>Det jeg prøver er at lave en simpel SQL sætning hvor WHERE-del kun skal
>eksistere hvis variablen @origen er forskellig fra ''.

I en tilsvarende situation (ganske vist i et serverside-sprog)
lavede jeg det med en streng der blev sat i overensstemmelse med
en betingelse:

streng= "WHERE 1=1";
if (something) streng="WHERE name='Bertel'";

Måske kan du noget lignende?

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Lars Hoffmann (12-01-2005)
Kommentar
Fra : Lars Hoffmann


Dato : 12-01-05 13:36

"Bertel Lund Hansen" <nospamius@lundhansen.dk> wrote in message
news:ua4au0dc4kvqrt1t86ti1cahm4b7od1lg6@news.stofanet.dk

> streng= "WHERE 1=1";
> if (something) streng="WHERE name='Bertel'";
>
> Måske kan du noget lignende?

Det var også mit første indskyd, at smide det helete ind i en streng og
derefter bruge strengen i declare sætningen, noget a lá:

DECLARE minCursor CURSOR FOR @SQLStreng


Men den gik heller ikke. Så vidt jeg kan se, kan jeg ikke bruge en
variable efter FOR

Med venlig hilsen
Lars Hoffmann


--
Posted via Mailgate.ORG Server - http://www.Mailgate.ORG

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste