MsSql 2005 stored procedure problem

Permalänk
Medlem

MsSql 2005 stored procedure problem

Hej! har ett SP här som inte vill fungera som det ska. Var ett tag sen jag sysslade med SQL så det är säkert något uppenbart jag missat. Har kollat överallt på Google dock, men inte hittat en passande lösning.

Såhär ser den ut:

CREATE PROCEDURE updateSchedule @schedule VARCHAR(MAX), @week TINYINT AS IF ((SELECT schedule FROM schedules WHERE week = @week) = '') UPDATE schedules SET schedule = @schedule WHERE week = @week ELSE INSERT INTO schedules (schedule, week) VALUES (@schedule, @week)

I IF-satsen är det två apostrofer på slutet, inte ett citattecken. Misstänker starkt att det är IF-satsen som spökar ändå. Har även prövat att köra utan paranteser på den med det funkar ändå inte. IF satsen blir alltid falsk även fast jag exekverar SP'n med argument som ska göra den sann. Förslag?

Visa signatur

AMD Athlon 64 3k+, ASUS A8N-SLI deluxe, NVIDIA GeForce 6200 TurboCache, Q-TEC PSU 650W, NVIDIA nForce nätverkskort, SB Audigy 2, 2 x 1GB Corsair PC3000 DDR-SDRAM, WD Raptor 36.7GB SATA 8MB 10k RPM och Maxtor 200GB SATA

Permalänk
Medlem

Du vill nog använda EXISTS istället:

CREATE PROCEDURE updateSchedule @schedule VARCHAR(MAX), @week TINYINT AS IF EXISTS (SELECT schedule FROM schedules WHERE week = @week) UPDATE schedules SET schedule = @schedule WHERE week = @week ELSE INSERT INTO schedules (schedule, week) VALUES (@schedule, @week)

Permalänk
Medlem

Det gjorde tricket! tackar och bockar.

Visa signatur

AMD Athlon 64 3k+, ASUS A8N-SLI deluxe, NVIDIA GeForce 6200 TurboCache, Q-TEC PSU 650W, NVIDIA nForce nätverkskort, SB Audigy 2, 2 x 1GB Corsair PC3000 DDR-SDRAM, WD Raptor 36.7GB SATA 8MB 10k RPM och Maxtor 200GB SATA