Avatar billede jangravgaard Nybegynder
11. november 2003 - 12:57 Der er 7 kommentarer og
1 løsning

Stored procedure fejler på datetime

Jeg har denne SP:


USE TransFleet
IF EXISTS (SELECT name FROM sysobjects
        WHERE name = 'usp_count_parcels' AND type = 'P')
  DROP PROCEDURE usp_count_parcels
GO
CREATE PROCEDURE usp_count_parcels
    @time = datetime,
    @description = varchar(100)
AS

SELECT
a.ParcelNumber,
b.GoodsDescription,
c.TimeStatus
FROM
TransFleet.dbo.CargoLine b,
TransFleet.dbo.OrderParcelNumbers a,
TransFleet.dbo.OrderStatus c
WHERE
b.OrderId = c.OrderId AND
a.OrderId = c.OrderId AND
c.TimeStatus>@time AND c.TimeStatus<@time AND
b.GoodsDescription = @description
GROUP BY a.ParcelNumber, b.GoodsDescription, c.TimeStatus

GO

hvor jeg får følgende fejl:

Server: Msg 170, Level 15, State 1, Procedure usp_count_parcels, Line 2
Line 2: Incorrect syntax near '='.
Server: Msg 137, Level 15, State 1, Procedure usp_count_parcels, Line 17
Must declare the variable '@time'.

Hvordan skal jeg så skrive det ?
Avatar billede bjornicle Nybegynder
11. november 2003 - 13:10 #1
CREATE PROCEDURE usp_count_parcels
    @time datetime,
    @description varchar(100)
AS
Avatar billede jangravgaard Nybegynder
11. november 2003 - 13:13 #2
hmm, man stirrer sig hurtigt blind :-)

Hvordan er det så jeg kalder sp'en med de to variabler ? f.eks.
description = 'afhenter'
time = '2003-09-01 00:00:00'
Avatar billede bjornicle Nybegynder
11. november 2003 - 13:18 #3
exec usp_count_parcels @time = '2003-09-01 00:00:00', @description = 'afhenter'
Avatar billede jangravgaard Nybegynder
11. november 2003 - 13:32 #4
det duer jo bare men jeg har været lidt for hurtig, jeg har også brug for at få lagt en dag til min @time, således at hvis sp'en bliver kaldt med :
exec usp_count_parcels @time = '2003-09-01 00:00:00', @description = 'afhenter'
så skal der selecteres fra @time til @time + en dag.
Avatar billede dmk Nybegynder
11. november 2003 - 13:37 #5
Så vidt jeg ved, så er default-enheden for en datetime 1 dag, så du burde kunne sige:

AND c.TimeStatus>@time AND c.TimeStatus<@time+1


Det ville i hvert fald virke på Oracle :)
Avatar billede jangravgaard Nybegynder
11. november 2003 - 13:40 #6
Det duer skam også her :-)

til bjornicle, smid lige et svar, så får I lov til at dele
Avatar billede bjornicle Nybegynder
11. november 2003 - 13:41 #7
giv du bare hele puljen til dmk
Avatar billede jangravgaard Nybegynder
11. november 2003 - 13:44 #8
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester