JAg försöker mig på min första SP Borde det inte vara Lade in ett svar på hur det kan se ut i din förra tråd - kolla där. Tack så hjättemycket. Helt rätt tänkt!! Jag brukar resonera så att SQL-kod hör hemma i databasen efter detFel på Stored Procedure(LÖST tack för alla svaren)
Och det går åt skogen...
[kod]
CREATE PROCEDURE spAlltTillGrid
AS
@songtitel varchar(20)
SELECT t_songtitlar.songtitel, t_placering.Datum,
Sum(CASE t_område.Område WHEN 'Sverige' THEN t_placering.Placering ELSE 0 END) AS Sverige,
Sum(CASE t_område.Område WHEN 'Europa' THEN t_placering.Placering ELSE 0 END) AS Europa,
Sum(CASE t_område.Område WHEN 'Världen' THEN t_placering.Placering ELSE 0 END) AS Världen
FROM t_songtitlar INNER JOIN (t_område INNER JOIN t_placering ON
t_område.omr_Id = t_placering.omr_Id) ON t_songtitlar.ArrNo = t_placering.ArrNo
Where t_SongTitlar.songtitel = @songtitel
GROUP BY t_songtitlar.songtitel, t_placering.Datum
ORDER BY t_placering.Datum DESC
[/kod]
Jag får ett fel:
[kod]
Server: Msg 170, Level 15, State 1, Procedure spAlltTillGrid, Line 3
Line 3: Incorrect syntax near '@songtitel'.
Server: Msg 137, Level 15, State 1, Procedure spAlltTillGrid, Line 10
Must declare the variable '@songtitel'.
[/kod]
Vad gör jag för fel??Sv: Fel på Stored Procedure
CREATE PROCEDURE spAlltTillGrid (
@songtitel varchar(20) )
AS
istället för
CREATE PROCEDURE spAlltTillGrid
AS
@songtitel varchar(20) Sv: Fel på Stored Procedure
Fast det förståss - mitt svar skiljer sig knappast från Prozacs, bara
formuleringen.
/EmmaSv: Fel på Stored Procedure
En avslutande fråga på det här.
Just nu så gör jag om istort ALLA mina SQL till SP, är det feel tänkt av mig???Sv: Fel på Stored Procedure
Det finns massor av fördelar med SP
t.ex. sp:ar är förkompilerade och cachas till skillnad från dynamisk sql. Om du gör ändringar i databasen behöver du inte leta efter alla sql-satser som ska ändras i ditt system, all åtkomst till tabellerna finns på samma ställe. Det är dessutom lättare att administrera säkerheten tycker jag.
/MartinSv: Fel på Stored Procedure
är ett databasspråk - ska inte sitta och koda det i ett annat program där
Queryn inte är testad i förväg, mycket enklare att bara anropa sp:s
efterhand eftersom syntaxen alltid är de samma. Förutom de kan du
göra dem betydligt mer komplicerade än vad du hade kunnat göra
innifrån ditt anropande program.
/Emma