martes, 31 de agosto de 2010

Como Crear una función en SQL SERVER 2008

Muchas veces a la hora de realizar consultas necesitamos que cierto campo de la tabla que estamos consultando se comporte de una manera determinada, por ejemplo que un campo c1 sea enviado como un parámetro de una función y esta me devuelva un valor. Para entender vamos a plantear que en el campo c1 guardo estos valores :
c1
---
1
2
3

... bueno a la hora de realizar la consulta deseo que en lugar de que me muestre 1, 2 o 3 me muestres "RUC", "DNI" , "CARNE DE EXTRANJERIA " ... bien entonces para este caso puedo hacer uso de una FUNCIÓN del SQL SERVER 2008 ,mandar el campo c1 y que me muestre el valor ,es algo sencillo lo sé ,que seguramente se puede realizar en la misma consulta empleando un WHEN u otro método pero para el ejemplo vamos a emplear una FUNCION ESCALAR, la sintaxis para crear este tipo de función es la siguiente :


CREATE FUNCTION <Scalar_Function_Name, sysname, FunctionName>

(

-- Add the parameters for the function here

<@Param1, sysname, @p1&gt; &lt;Data_Type_For_Param1, , int&gt;

)

RETURNS &lt;Function_Data_Type, ,int&gt;

AS

BEGIN

-- Declare the return variable here

DECLARE <@ResultVar, sysname, @Result&gt; &lt;Function_Data_Type, ,int&gt;


-- Add the T-SQL statements to compute the return value here

SELECT <@ResultVar, sysname, @Result&gt; = <@Param1, sysname, @p1&gt;


-- Return the result of the function

RETURN <@ResultVar, sysname, @Result&gt;


END

Bien ahora que ya conocemos la sintaxis y hemos comentado lo que pretendemos realizar empleando la función, vayamos a la practica, una vez abierto el SQL Server Management Studio, vamos a la siguiente opción :
1)



2)Hacemos Clic con el botón derecho en la opción seleccionada y seleccionamos la opción Nueva Funcion Escalar

3) Llego el momento de crear nuestra función, analicen el código

CREATE FUNCTION ufsGetTipodeDocumento

(@Id int)

RETURNS varchar(25)

AS

BEGIN

declare @strtd varchar(25)

if @Id=1

set @strtd='RUC'

if @Id=2

set @strtd='DNI'

if @Id=3

set @strtd='CARNE EXTRANJERIA'



RETURN @strtd


END


4)Una vez creada nuestra función ufsGetTipodeDocumento ahora vamos a hacer uso de ella



Sencillo no? ... bueno asi de sencillo es crear nuestras propias funciones en SQL SERVER 2008, en una proxima publicación vamos a seguir escribiendo acerca de las funciones porque realmente son muy utiles y te sacan de varios aprietos a la hora de desarrollar nuestros proyectos ... saludos

3 comentarios:

  1. Como la puedo mandar ejecutar desde C#?? Osea como puedo ejecutar una funcion hecha en SQL Server 2008 y mandarla llamar atraves de Entity Framework del Visual Studio 2008??

    ResponderEliminar
  2. ya cree la funcion pero al momento de querer usarlo no reconoce dicha funcion, como puedo solucionarlo?

    ResponderEliminar