Utilisation de "TOP" dans une fonction scalaire
Bonjour tout le monde,
Mon collègue vient de me poser une belle colle... Savez-vous s'il est possible d'utiliser la commande "TOP" dans une fonction scalaire SQL Server?
Si non, connaîtriez-vous une façon pour contourner l'utilisation de TOP?
Pour info voici la fonction qui pose problème. Elle renvoie le dernier prix pratiqué pour l'article et le client passé en paramètre.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| ALTER FUNCTION [dbo].[fct_get_prix_unitaire]
(
@CLI_COD AS VARCHAR(7),
@ART_COD AS VARCHAR(16)
)
RETURNS FLOAT
AS
BEGIN
-- Declare the return variable here
DECLARE @PRIX_UNIT AS FLOAT
-- Add the T-SQL statements to compute the return value here
SELECT @PRIX_UNIT = TOP (1) rq_gpao_facture_clients_pos.fdp_pvu_d
FROM rq_gpao_facture_clients_pos LEFT OUTER JOIN rq_gpao_factures_clients ON
rq_gpao_facture_clients_pos.fdb_num = rq_gpao_factures_clients.fdb_num
WHERE (rq_gpao_factures_clients.fdb_fdbndc <> 'C') AND
(rq_gpao_facture_clients_pos.art_cod = @ART_COD) AND
(rq_gpao_facture_clients_pos.cli_cod = @CLI_COD)
ORDER BY rq_gpao_facture_clients_pos.fdp_dat_cre DESC
-- Return the result of the function
RETURN @PRIX_UNIT
END |
La fonction si dessus ne fonctionne donc pas je pense à cause du TOP(1) mais je ne sais pas comment faire pour ne pas l'utiliser ou simplement contourner le problème et faire d'une autre manière.
D'avance merci et bonne fin de journée...
Julius