# Start coding here... Cuando una función es "deterministica" quiere decir que el resuldado que arroje siempre será el mismo dados los mismos parámetros y siendo el mismo estado de la base de datos
SCHEMABINDING
Enlaza el objeto (i.e vista, función, etc.) al esquema de las tablas subyacentes. Cuando se especifica SCHEMABINDING, las tablas base no se pueden modificar de una forma que afecte a la definición del objeto.
CREATE OR ALTER FUNCTION dbo.GetRideHrsOneDay (@DateParm date)
RETURNS numeric WITH SCHEMABINDING
AS
BEGIN
RETURN
(SELECT SUM(DATEDIFF(second, PickupDate, DropoffDate))/3600
FROM dbo.YellowTripData
WHERE CONVERT (date, PickupDate) =@DateParm)
END;
Store Procedure
Solo se asimilan a las funciones por el hecho de aceptar parámetros de entrada. Tiene parametros de entrada y salida, pueden usar TRY-CATCH, usan funciones DML, puden llamar funciones u otros procedimientos almacenados. Diferencias entre parametros de salida y valores de retorno:
Output parameters
Can be any data typeCan declare multiple per SP Cannot be table-valued parameters
Return value
Used to indicate success or failure Integer data type only 0 indicates success and non zero indicatesfailure
CREATE PROCEDURE dbo.cuspGetRideHrsOneDay
@DateParmdate,
@RideHrsOutnumeric OUTPUT
AS
SET NOCOUNT ON --SET NOCOUNT ON impide el envío al cliente de mensajes DONEINPROC por cada instrucción de un procedimiento almacenado. En los procedimientos almacenados que contengan varias instrucciones que no devuelven mucha información real o en los procedimientos que contengan bucles de Transact-SQL, establecer SET NOCOUNT en ON puede suponer una mejora significativa del rendimiento, ya que el tráfico de la red se reduce en gran medida.
BEGIN
SELECT
@RideHrsOut=SUM(
DATEDIFF(second, PickupDate, DropoffDate)
)/3600
FROM YellowTripData
WHERE
CONVERT(date, PickupDate) =@DateParm
RETURN
END;