SQLMax Connections
¿QUIENES SOMOS?

MS-SQL Server
Características
La mejor Base de Datos
DESARROLLOS
CON SQL

Utilitario ESQL
Tutorial de ASP
Seguridad en IIS
ARTICULOS VARIOS
Buscar txt en los SP
Asegurar los Datos
Ajuste RDBMS
Reporting Services
Funciones en SQL
Optimización de SQL
Administración MMC
Transformación DTS
Config. de memoria
Data WareHouse
Procedimientos no documentados
ADMINISTRACION
Configuración de SQL
Utilitarios de
Administración

RECURSOS
Listas de Correo
Foro de SQL
Foro de ASP
Foro de DW
Codigos de Ejemplo

Funciones en SQL Server 2000 (1/2)

Introducción

Microsoft agregó nuevas características a su producto SQL 2000, y lo más interesante para los programadores del SQL es la posibilidad de hacer funciones definidas por el usuario. La adición de funciones al lenguaje del SQL solucionara los problemas de reutilización del código y dara mayor flexibilidad al programar las consultas de SQL.

Este artículo se centra en el sintaxis, estructura, y la aplicación de funciones definidas por el usuario en SQL. El material presentado se basa en el beta 2 del servidor 2000 del SQL.

Tipos de funciones

El servidor 2000 del SQL utiliza tres tipos de funciones: las funciones escalares, tabla en linea , funciones de tabla de multi sentencias. Los tres tipos de funciones aceptan parámetros de cualquier tipo excepto el rowversion. Las funciones escalares devuelven un solo valor, tabla en linea y Multisentencias devuelben un tipo de dato tabla. (NOTA: el tipo de los datos del tabla es nuevo en SQL 2000)

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 sentencias SQL. La sintaxis para una función escalar es la siguiente:

CREATE FUNCTION [owner_name.] function_name
( [{ @parameter_name  scalar_parameter_type [ = default]} [,..n]])
RETURNS scalar_return_type
[WITH <function_option> >::={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 the standard factorial example:

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

IF @iNumber <= 1
SET @i = 1
ELSE
SET @i = @iNumber * dbo.Factorial( @iNumber - 1 )
RETURN (@i)
END

II. Funciones de tabla en línea

Las funciones de tabl en linea son las funciones que devuelven la salida de una simple declaración SELECT. La salida se puede utilizar adentro de joins o querys como si fuera un tabla de estándar. La sintaxis para una función de tabla en linea es como sigue:

CREATE FUNCTION [owner_name.] function_name
( [{ @parameter_name  scalar_parameter_type [ = default]} [,..n]])
RETURNS TABLE
[WITH <function_option>::={SCHEMABINDING | ENCRYPTION}]
RETURN [(] select_statement [)]

An in-line function to return the authors from a particular state would
look like this:

CREATE FUNCTION dbo.AuthorsForState(@cState char(2) )
RETURNS TABLE
AS
RETURN (SELECT * FROM Authors WHERE state = @cState)

III. Las funciones de tabla de multi sentencias son similares a los procedimientos almasenados excepto que vuelven un tabla. Este tipo de función se usa en situaciones donde se requiere más lógica y proseso. Lo que sigue es la sintaxis para una funciones de tabla de multi sentencias:

CREATE FUNCTION [owner_name.] function_name
( [{ @parameter_name  scalar_parameter_type [ = default]} [,..n]])
RETURNS TABLE
[WITH <function_option> >::={SCHEMABINDING | ENCRYPTION]
[AS]
BEGIN
function_body
RETURN
END

Segunda Parte --->

 


Amigos en Linea

Acceso al
Centro de Entrenamiento

Google


© 2001- RealITech - Todos los derechos reservados
Microsoft, Visual Basic, MSDN, ActiveX, Visual C++, Visual FoxPro, Visual InterDev, Visual Studio, Win32, MS SQL Server, BackOffice, JScript, SBS (Small Business Server), Developer Studio, Windows y Windows NT son marcas registradas por Microsoft Corporation en Estados Unidos y otros países.

Diseño multimedia