webForumDet fria alternativet

Sp

6 svar · 286 visningar · startad av skarbratt

skarbrattMedlem sedan juli 2000344 inlägg
#1

Skule vilja skriv in i min SP innehållet i login1 & 2.

Men den verkar inte gilla det.

Fattar någon vad jga menar och har ni i så fall något tips.

IF Session("sida") = True THEN
				login1	= "(mainAreas.lang = 3 OR "
				login2	= ")"
			END IF
			
			SQL = "execute sp_getMainAreas "&lang&", '"&d&"', '"&login1&"', '"&login2&"'
CREATE PROCEDURE [sp_getMainAreas] 
@d datetime,
@lang int,
@login1 varchar(50),
@login2 varchar(50)

AS
SELECT * 
FROM mainAreas, publish 
WHERE @login1
mainAreas.lang = @lang 
@login2
AND mainAreas.page = publish.pageID
AND publish.startDate <= @d
AND publish.endDate > @d
ORDER BY mainAreas.OrderID

------------------
fencing for you?
http://www.fencing4u.nu/

@ndersMedlem sedan juni 200026 914 inlägg
#2

jag föreslår att du byter plats på lang och d när du kallar på din procedur, så värdena kommer på de ställen som proceduren förväntar sig.

i övrigt, fungerar sp:n som den ska när du kör den i query analyzer?

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

@ndersMedlem sedan juni 200026 914 inlägg
#3

när jag nu tittar på proceduren så tror jag att jag förstår varför den inte lirar.

låt mig göra ett försök:

CREATE PROCEDURE [sp_getMainAreas] 
@d datetime,
@lang int,
@login1 varchar(50),
@login2 varchar(50)

AS

DECLARE @strSelect varchar(2000)

SELECT @strSelect = 'SELECT * FROM mainAreas, publish '
SELECT @strSelect = @strSelect + 'WHERE ' + @login1 + 'mainAreas.lang = ' + @lang + @login2
SELECT @strSelect = @strSelect + 'AND mainAreas.page = publish.pageID AND publish.startDate <= ''' + @d + ''''
SELECT @strSelect = @strSelect + 'AND publish.endDate > ''' + @d + ''' ORDER BY mainAreas.OrderID'

EXEC (@strSelect)

du ska inte tro att du slipper undan apostrofkrångel bara för att du använder stored procedures...

du kan inte heller blanda variabler och kod hur som helst heller.

rapportera! :)

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

skarbrattMedlem sedan juli 2000344 inlägg
#4

Inte för mig, men visserligen löste jag det på ett annat sätt.

Skulle dock vara bra till en annan gång att få det här att fungera. Dumenar att det funkade för mig jag får fel på rad 10.

Server: Msg 170, Level 15, State 1, Procedure sp_getMainAreas, Line 10
Line 10: Incorrect syntax near 'mainAreas'.

------------------
fencing for you?
http://www.fencing4u.nu/

skarbrattMedlem sedan juli 2000344 inlägg
#5

Skall testa det skarpt efter lunchen.

tack på förhand, det fungerar ju i alla fal i QA

------------------
fencing for you?
http://www.fencing4u.nu/

skarbrattMedlem sedan juli 2000344 inlägg
#6

Får problem med omvandlingen av Int och datetime till String i SP:en när jag kör skarpt.

------------------
fencing for you?
http://www.fencing4u.nu/

LarsGMedlem sedan dec. 200012 465 inlägg
#7

I så fall får du lägga in en cast på de variablerna

  cast(@lang as varchar(12))

I och för sig så förstår jag inte vad du vinner på att använda en sp.

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 23 feb 2001]

122 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
119 ms — hämta tråd, inlägg och bilagor (db)