funciones en transc sql

Páginas: 24 (5834 palabras) Publicado: 31 de agosto de 2014
2. SQ

LyTRANSACT SQL –TECNOLOGIA BASE DE DATOS-

Lic. Julia Zenteno Z.

Página | 1

FUNCIONES EN TRANSACT SQL
SQL Server proporciona al usuario la posibilidad de definir sus propias funciones, conocidas como UDF (User
Defined Functions). Existen tres tipos de funciones. Estas son:
-

Funciones escalares.
Funciones en línea.
Funciones en línea de múltiples sentencias.

Funcionesescalares
Las funciones escalares devuelven un único valor de cualquier tipo de los datos tal como int, money, varchar,
real, etc.
La sintaxis para una función escalar es la siguiente:
CREATE FUNCTION
(
-- Lista de parámetros
, ...
)
-- Tipo de datos que devuelve la función.
RETURNS
AS
BEGIN
...
END
El siguiente ejemplo muestra cómo crear una función escalar.
USE AUTO_ESCUELA/* Mostrar los nombres de los alumnos que tiene clases teoricas con el instructor x */
create function Alu_ins (@cod_ins varchar(5)) returns varchar(15)
as
begin
declare @nombre varchar(15);
select @nombre=a.nom_alu
from alumno a
INNER JOIN clases_teoricas ct ON (a.mat_alu=ct.cod_alu )
INNER JOIN instructor i ON (ct.cod_ins=i.cod_ins )
return @nombre
end /* Alu_ins */
Pueden serutilizadas en cualquier sentencia Transact SQL. Un aspecto a tener en cuenta, es que para utilizar
una función escalar debemos identificar el nombre de la función con el propietario de la misma.
El siguiente ejemplo muestra cómo utilizar la función anteriormente creada en una sentencia Transact SQL. Un
aspecto muy a tener en cuenta es que la función ejecutará sus sentencias SELECT una vez por cada filadel
conjunto de resultados devuelto por la consulta SELECT principal.
--ejecutar
SELECT -- Ejecucion de la funcion:
distinct (dbo.Alu_ins ('I-001')) nombre
FROM Alumno
-- o
print dbo.Alu_ins ('I-001')

2. SQ

LyTRANSACT SQL –TECNOLOGIA BASE DE DATOS-

Lic. Julia Zenteno Z.

Página | 2

Las funciones escalares son muy similares a procedimientos almacenados con parámetros desalida, pero estas
pueden ser utilizadas en consultas de seleccion y en la clausula where de las mismas.
Las funciones no pueden ejecutar sentencias INSERT o UPDATE.
Funciones en línea
Las funciones en línea son las funciones que devuelven un conjunto de resultados correspondientes a la
ejecución de una sentencia SELECT.
La sintaxis para una función de tabla en línea es la siguiente:

CREATEFUNCTION
(
-- Lista de parámetros
,...
)
RETURNS TABLE
AS
RETURN
(
-- Sentencia Transact SQL
)
El siguiente ejemplo muestra cómo crear una función en línea.
/* MOSTRAR LA DIRECCION DE LA AULA DONDE PASO CLASES EL ESTUDIANTE X */
drop function ALUMNO_INSTRUCTOR /*PARA ELIMINAR LA FUNCION*/
CREATE FUNCTION ALUMNO_INSTRUCTOR(@codalu VARCHAR(20))RETURNS TABLE
AS
RETURN
(
SELECTc.dir_aul
FROM Alumno a
INNER JOIN clases_teoricas ct ON (a.mat_alu=ct.cod_alu )
INNER JOIN aula c ON (ct.cod_aul=c.num_aul )
where a.mat_alu=@codalu
)
/* EJECUTAR */
select * from alumno
select * from instructor
select * from dbo.ALUMNO_INSTRUCTOR('CFR-24212')
No podemos utilizar la clausula ORDER BY en la sentencia de una función el línea.
Las funciones en línea pueden utilizarse dentro dejoins o querys como si fueran una tabla normal.
FUNCIONES EN LÍNEA DE MÚLTIPLES SENTENCIAS
Las funciones en línea de múltiples sentencias son similares a las funciones en línea excepto que el conjunto de
resultados que devuelven puede estar compuesto por la ejecución de varios consultas SELECT.
Este tipo de función se usa en situaciones donde se requiere una mayor lógica de proceso.
Lasintaxis para una función es de tabla de multi sentencias es la siguiente:

2. SQ

LyTRANSACT SQL –TECNOLOGIA BASE DE DATOS-

Lic. Julia Zenteno Z.

Página | 3

CREATE FUNCTION
(
-- Lista de parámetros
, ...
)
RETURNS
-- variable de tipo tabla y su estructura
TABLE
(
,

)
AS
BEGIN
-- Sentencias que cargan de datos la tabla declarada
RETURN
END
Posteriormente se verá...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Funciones de SQL
  • Funciones en sql
  • Funciones SQL
  • Funciones SQL
  • Funciones en sql
  • Funciones de cadena sql
  • Funciones sql server
  • Funciones Agrupamiento En Sql

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS