¿Cuál es la sintaxis correcta para crear una función escalar en línea en SQL Server?Funciones escalares en línea: ¿real o vaporware?
Libros en pantalla, en el Types of Functions capítulo (2005 en adelante), habla de Inline Funciones escalares como si existieran y como si no se requiere un bloque de BEGIN...END
(en contraste con las funciones de varias líneas):
Para una función escalar en línea, no hay cuerpo de función; el valor escalar es el resultado de una declaración única. Para una función escalar de múltiples instrucciones, el cuerpo de la función, definido en un bloque BEGIN ... END, contiene una serie de instrucciones de Transact-SQL que devuelven el valor único.
También he notado una fila para "es: Función escalar en línea" en la lista de tipos de objetos en la tabla spt_values:
SELECT name
FROM master..spt_values
WHERE type = 'O9T'
AND name LIKE '%function%'
He tratado de crear una función de este tipo sin éxito :
CREATE FUNCTION AddOne(@n int) RETURNS int
AS
RETURN @n + 1
El mensaje de error es
Msg 102, nivel 15, estado 31, procedimiento AddOne, línea 3 Sintaxis incorrecta cerca de 'RETORNO'.
¿Echo de menos algo o hay un error en Books Online?
No veo cómo BOL para CREATE FUNCTION ni el enlace al que hace referencia implica que no necesita bloques BEGIN..END. Creo que estás malinterpretando algo. –
Para aclarar, me gustaría crear una función de tipo 'IS' y no 'FN' o 'TF'. –
Y qué significa "Para una función escalar en línea, no hay cuerpo de función"? –