utilisant SQLServer 2008.table à langer multi-instruction fonction de valeur (TVF) à inline TVF
Exemple TVF multi-instruction:
CREATE TABLE DBO.DECTEST (ID INT NOT NULL PRIMARY KEY,
V1 DECIMAL(18,6) NOT NULL, V2 DECIMAL(18,6) NOT NULL)
INSERT DECTEST VALUES (1, 23.1234, 25.22)
GO
DROP FUNCTION DBO.F_DECTEST1
GO
CREATE FUNCTION DBO.F_DECTEST1
(
@ID INT
)
RETURNS @RESULT TABLE
(
V1 DECIMAL(18,6),
V2 DECIMAL(18,6)
)
AS
BEGIN
DECLARE @V1 DECIMAL (18,6)
DECLARE @V2 DECIMAL(18,6)
SELECT @V1 = V1, @V2 = V2 FROM DBO.DECTEST WHERE ID = @ID
INSERT @RESULT (V1, V2) VALUES (ISNULL(@V1, 0), ISNULL(@V2, 0))
RETURN
END
GO
Je veux changer cela à un TVF en ligne (pour des raisons de performance). Notez qu'une ligne est toujours renvoyée dans le jeu de résultats - même si un ID inexistant est passé. Existe-t-il un moyen propre de faire cela?
nous voulez un TVF afin que nous puissions utiliser CROSS APPLY avec. J'avais peur que la version inline soit plutôt moche, mais merci d'avoir essayé. –