Hello,
in a complex stored procedure, i get an error when i want to apply an ORDER BY statement :
Here is a part of this Stored Procedure :
SELECT TaOperations.Id_Operation, TaOperations.HeureDebut, TaOperations.Signe, TaOperations.Facturer, TaOperations.IdUserVerrou,
TaOperations.Id_Client, TaTypeOperation.Facturable, CONVERT(CHAR(10), TaOperations.HeureDebut,
103) + ' - ' + TaTypeOperation.TypeOperation AS Code
FROM TaOperations INNER JOIN
TaTypeOperation ON TaOperations.Id_TypeOperation = TaTypeOperation.Id_TypeOperation
WHERE (TaOperations.Id_Client = CONVERT(int, @.Id_Client)) AND (TaTypeOperation.Facturable = 1) AND (TaOperations.IdUserVerrou IS NULL)
If I want to apply an ORDER BY statement, i have
SELECT TaOperations.Id_Operation, TaOperations.HeureDebut, TaOperations.Signe, TaOperations.Facturer, TaOperations.IdUserVerrou,
TaOperations.Id_Client, TaTypeOperation.Facturable, CONVERT(CHAR(10), TaOperations.HeureDebut, 103)
+ ' - ' + TaTypeOperation.TypeOperation AS Code
FROM TaOperations INNER JOIN
TaTypeOperation ON TaOperations.Id_TypeOperation = TaTypeOperation.Id_TypeOperation
WHERE (TaOperations.Id_Client = CONVERT(int, @.Id_Client)) AND (TaTypeOperation.Facturable = 1) AND (TaOperations.IdUserVerrou IS NULL)
ORDER BY TaOperations.HeureDebut
I get this error :
Msg 156, Level 15, State 1, Procedure SIE_ListeOperationsFacturablesParClient, Line 46
Incorrect syntax near the keyword 'ORDER'.
Does anyone cab help me ?
Is there anything else after the SELECT statement?WesleyB
Visit my SQL Server weblog @. http://dis4ea.blogspot.com
|||Here is the whole code :
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[SIE_ListeOperationsFacturablesParClient]
@.Id_Client char(5),
@.Cas int
AS
BEGIN
SET NOCOUNT ON;
If @.cas = 0 (
SELECT TaOperations.Id_Operation, TaOperations.HeureDebut, TaOperations.Signe, TaOperations.Facturer, TaOperations.IdUserVerrou,
TaOperations.Id_Client, TaTypeOperation.Facturable, CONVERT(CHAR(10), TaOperations.HeureDebut,
103) + ' - ' + TaTypeOperation.TypeOperation AS Code
FROM TaOperations INNER JOIN
TaTypeOperation ON TaOperations.Id_TypeOperation = TaTypeOperation.Id_TypeOperation
WHERE (TaOperations.Id_Client = CONVERT(int, @.Id_Client)) AND (TaTypeOperation.Facturable = 1) AND (TaOperations.Signe = 1) AND
(TaOperations.IdUserVerrou IS NOT NULL))
If @.cas = 1 (
SELECT TaOperations.Id_Operation, TaOperations.HeureDebut, TaOperations.Signe, TaOperations.Facturer, TaOperations.IdUserVerrou,
TaOperations.Id_Client, TaTypeOperation.Facturable, CONVERT(CHAR(10), TaOperations.HeureDebut,
103) + ' - ' + TaTypeOperation.TypeOperation AS Code
FROM TaOperations INNER JOIN
TaTypeOperation ON TaOperations.Id_TypeOperation = TaTypeOperation.Id_TypeOperation
WHERE (TaOperations.Id_Client = CONVERT(int, @.Id_Client)) AND (TaTypeOperation.Facturable = 1) AND (TaOperations.Signe = 0) AND
(TaOperations.IdUserVerrou IS NOT NULL))
If @.cas = 2 (
SELECT TaOperations.Id_Operation, TaOperations.HeureDebut, TaOperations.Signe, TaOperations.Facturer, TaOperations.IdUserVerrou,
TaOperations.Id_Client, TaTypeOperation.Facturable, CONVERT(CHAR(10), TaOperations.HeureDebut, 103)
+ ' - ' + TaTypeOperation.TypeOperation AS Code
FROM TaOperations INNER JOIN
TaTypeOperation ON TaOperations.Id_TypeOperation = TaTypeOperation.Id_TypeOperation
WHERE (TaOperations.Id_Client = CONVERT(int, @.Id_Client)) AND (TaTypeOperation.Facturable = 1) AND (TaOperations.IdUserVerrou IS NULL)
ORDER BY TaOperations.HeureDebut DESC
)
END
|||T-SQL normally uses the following syntax but you can leave out the BEGIN and END if you are only executing one query (or a single line of code).IF @.var = x
BEGIN
YOUR CODE
END
Could you try leaving out the ( and ) for the if clauses?
If @.cas = 2
SELECT TaOperations.Id_Operation, TaOperations.HeureDebut, TaOperations.Signe, TaOperations.Facturer, TaOperations.IdUserVerrou,
TaOperations.Id_Client, TaTypeOperation.Facturable,CONVERT(CHAR(10), TaOperations.HeureDebut, 103)
+' - '+ TaTypeOperation.TypeOperation AS Code
FROM TaOperations INNERJOIN
TaTypeOperation ON TaOperations.Id_TypeOperation = TaTypeOperation.Id_TypeOperation
WHERE(TaOperations.Id_Client =CONVERT(int, @.Id_Client))AND(TaTypeOperation.Facturable = 1)AND(TaOperations.IdUserVerrou ISNULL)
ORDERBY TaOperations.HeureDebut DESC
WesleyB
Visit my SQL Server weblog @. http://dis4ea.blogspot.com
|||Wonderful !!! it works thanks a lotsql
No comments:
Post a Comment