Nose

Solo disponible en BuenasTareas
  • Páginas : 4 (934 palabras )
  • Descarga(s) : 0
  • Publicado : 7 de octubre de 2010
Leer documento completo
Vista previa del texto
I. Funciones Escalares
Las funciones escalares vuelven un tipo de los datos tal como int, money, varchar, real, etc. Pueden ser utilizadas en cualquier lugar incluso incorporada dentro de sentenciasSQL. La sintaxis para una función escalar es la siguiente:
CREATE FUNCTION [owner_name.] function_name
( [{ @parameter_name  scalar_parameter_type [ = default]} [,..n]])
RETURNSscalar_return_type
[WITH >::={SCHEMABINDING | ENCRYPTION]
[AS]
BEGIN
function_body
RETURN scalar_expression
END

A simple scalar function to cube a number would look like this:

CREATE FUNCTION dbo.Cube(@fNumber float)
RETURNS float
AS
BEGIN
RETURN(@fNumber * @fNumber * @fNumber)
END

Surprisingly, user-defined functions (UDFs) support recursion.  Here is an
SQL Server 2000 UDF using thestandard factorial example:

CREATE FUNCTION dbo.Factorial ( @iNumber int )
RETURNS INT
AS
BEGIN
DECLARE @i int

IF @iNumber ::={SCHEMABINDING | ENCRYPTION]
[AS]
BEGIN
function_body
RETURN
ENDLos datos jerárquicos, tales como una estructura de organización, son un ejemplo de los datos que no se pueden recopilar en una sola interrogación. La tabla Employees de la base de datos de NorthwindCompany contiene un campo llamado ReportsTo que contiene el EmployeeID del empleado. GetManagerReports es una funcion de tabla multi sentencias: que devuelve una lista de los empleados que apuntan aun empleado específico, directamente o indirectamente.
CREATE FUNCTION dbo.GetManagerReports ( @iEmployeeID int )
RETURNS @ManagerReports TABLE
   (
   EmployeeID int,
   EmployeeFirstName    nvarchar(10),
   EmployeeLastName nvarchar(20),
Title nvarchar(30),
TitleOfCourtesy nvarchar(25),
Extension nvarchar(4),
   ManagerID int
   )
AS
BEGIN

DECLARE

@iRowsAdded int, -- Countsrows added to
-- table with each iteration
@PREPROCESSED tinyint, -- Constant
for record prior
-- to processing
@PROCESSING tinyint, -- Constant
for record
-- being processed
@POSTPROCESSED...
tracking img