SE PUEDE PARAMETRIZAR UNA TABLA DENTRO DE UNA FUNCION

07/11/2003 - 19:42 por ALBERTO GUERRERO ZARO | Informe spam
He estado trabajando con funciones que devuelven tablas, me gustaría saber
si es posible crear una FUNCION con un parametro de ingreso que haga
referencia a una tabla manejada en la instruccion select dentro de la misma
FUNCION.

Por ejemplo:

CREATE FUNCTION dbo.tab_mesano()
RETURNS TABLE
AS
RETURN (
SELECT * FROM reg112003
)


Que la tabla "reg112003" ; sea parametrizable, debido que mi aplicacion
genera tablas mensuales.
Lo he visto en los procedimientos almacenados con la instruccion SET y luego
EXEC, pero hasta ahora no en FUNCIONES.

Gracias de Todas formas.

Alberto Guerrero

Copiapó-Chile

Preguntas similare

Leer las respuestas

#1 Accotto Maximiliano D.
07/11/2003 - 21:24 | Informe spam
cual es el objetivo de esa funcion?
ademas de devolver una tabla!!

si puedes darme un caso en como la usas seria util!!

por lo q probe desde una funcion no encontre como hacer para q el return
poder usar el Exec (me tira un error de sintanxis en Exec)




Accotto Maximiliano Damian
"ALBERTO GUERRERO ZARO" escribió en el mensaje
news:
He estado trabajando con funciones que devuelven tablas, me gustaría saber
si es posible crear una FUNCION con un parametro de ingreso que haga
referencia a una tabla manejada en la instruccion select dentro de la


misma
FUNCION.

Por ejemplo:

CREATE FUNCTION dbo.tab_mesano()
RETURNS TABLE
AS
RETURN (
SELECT * FROM reg112003
)


Que la tabla "reg112003" ; sea parametrizable, debido que mi aplicacion
genera tablas mensuales.
Lo he visto en los procedimientos almacenados con la instruccion SET y


luego
EXEC, pero hasta ahora no en FUNCIONES.

Gracias de Todas formas.

Alberto Guerrero

Copiapó-Chile


Respuesta Responder a este mensaje
#2 Diego Uribe
07/11/2003 - 22:47 | Informe spam
Siendo funcion toca que le mandes los parametros, no que utilices exec

ejemplo si se creo la funcion factorial(x) para llamarla tocaria hacer:

Select dbo.Factorial(5)

Saludos



"Accotto Maximiliano D." escribió en el
mensaje news:
cual es el objetivo de esa funcion?
ademas de devolver una tabla!!

si puedes darme un caso en como la usas seria util!!

por lo q probe desde una funcion no encontre como hacer para q el return
poder usar el Exec (me tira un error de sintanxis en Exec)




Accotto Maximiliano Damian
"ALBERTO GUERRERO ZARO" escribió en el mensaje
news:
> He estado trabajando con funciones que devuelven tablas, me gustaría


saber
> si es posible crear una FUNCION con un parametro de ingreso que haga
> referencia a una tabla manejada en la instruccion select dentro de la
misma
> FUNCION.
>
> Por ejemplo:
>
> CREATE FUNCTION dbo.tab_mesano()
> RETURNS TABLE
> AS
> RETURN (
> SELECT * FROM reg112003
> )
>
>
> Que la tabla "reg112003" ; sea parametrizable, debido que mi aplicacion
> genera tablas mensuales.
> Lo he visto en los procedimientos almacenados con la instruccion SET y
luego
> EXEC, pero hasta ahora no en FUNCIONES.
>
> Gracias de Todas formas.
>
> Alberto Guerrero
>
> Copiapó-Chile
>
>


Respuesta Responder a este mensaje
#3 Javier Loria
07/11/2003 - 22:48 | Informe spam
Hola Alberto:
No creo que puedas. La razon es la siguiente:
a) Para poder "parametrizar" una tabla requeriras usas SQL Dinamico con
lo cual tendras que usar el procedimiento almacenado sp_executesql.
b) La unica forma de tomar el resultado del procedimiento y para
devolverlo en forma de Tabla seria haciendo un INSERT a una variable Tabla
(prohibido por declaracion de variable tabla) o a travez de una tabla
Temporal (Prohibido por la funciones).
Creo que es un callejon sin salida. Cuanto he tenido Tablas "iguales"
divididas por algun criterio (en tu caso mes) siempre hago una Vista que es
el UNION ALL de todas las tablas participantes (Vistas Particionadas).
Tal vez te pueden seguir de guia el siguiente articulo:
SQL Dinamico: http://www.algonet.se/~sommar/dynamic_sql.html

Saludos


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

ALBERTO GUERRERO ZARO escribio:
He estado trabajando con funciones que devuelven tablas, me gustaría
saber si es posible crear una FUNCION con un parametro de ingreso
que haga referencia a una tabla manejada en la instruccion select
dentro de la misma FUNCION.

Por ejemplo:

CREATE FUNCTION dbo.tab_mesano()
RETURNS TABLE
AS
RETURN (
SELECT * FROM reg112003
)


Que la tabla "reg112003" ; sea parametrizable, debido que mi
aplicacion genera tablas mensuales.
Lo he visto en los procedimientos almacenados con la instruccion SET
y luego EXEC, pero hasta ahora no en FUNCIONES.

Gracias de Todas formas.

Alberto Guerrero

Copiapó-Chile
Respuesta Responder a este mensaje
#4 ALBERTO GUERRERO ZARO
07/11/2003 - 22:52 | Informe spam
Gracias por contestar, exactamente tu analisis es verdad yo intente lo
mismo.
En cuanto a lo que pretendia hacer, era una función que hiciera referencia a
una tabla variable, y luego llamarla desde una vista;
tengo tablas que se van creando segun los meses desde una aplicación, y por
lo tanto pretendia que las vistas referenciadas a la tabla del mes en curso
podrían ir cambiando automáticamente en el siguiente mes, entonces yo habria
parametrisado el mes y el año actual en una funcion que me devolviera una
Tabla, usando a lo menos las funciones Month y Getdate()

Esa era la idea.
Bueno no hace mucho trabajo con SQL SERVER asi que evidentemente tengo mucho
de hipotesis en lo que hablo.

Ejemplo de tablas:

"reg102003"
"reg112003"
"reg122003"

Saludos

Alberto



"Accotto Maximiliano D." escribió en el
mensaje news:
cual es el objetivo de esa funcion?
ademas de devolver una tabla!!

si puedes darme un caso en como la usas seria util!!

por lo q probe desde una funcion no encontre como hacer para q el return
poder usar el Exec (me tira un error de sintanxis en Exec)




Accotto Maximiliano Damian
"ALBERTO GUERRERO ZARO" escribió en el mensaje
news:
> He estado trabajando con funciones que devuelven tablas, me gustaría


saber
> si es posible crear una FUNCION con un parametro de ingreso que haga
> referencia a una tabla manejada en la instruccion select dentro de la
misma
> FUNCION.
>
> Por ejemplo:
>
> CREATE FUNCTION dbo.tab_mesano()
> RETURNS TABLE
> AS
> RETURN (
> SELECT * FROM reg112003
> )
>
>
> Que la tabla "reg112003" ; sea parametrizable, debido que mi aplicacion
> genera tablas mensuales.
> Lo he visto en los procedimientos almacenados con la instruccion SET y
luego
> EXEC, pero hasta ahora no en FUNCIONES.
>
> Gracias de Todas formas.
>
> Alberto Guerrero
>
> Copiapó-Chile
>
>


Respuesta Responder a este mensaje
#5 ALBERTO GUERRERO ZARO
07/11/2003 - 23:08 | Informe spam
Gracias a los participantes por responder,
He tomado nota de cada una de sus observaciones.
Y voy a hecharle una mirada a este link.:
http://www.algonet.se/~sommar/dynamic_sql.html

Alberto

"Javier Loria" escribió en el mensaje
news:
Hola Alberto:
No creo que puedas. La razon es la siguiente:
a) Para poder "parametrizar" una tabla requeriras usas SQL Dinamico


con
lo cual tendras que usar el procedimiento almacenado sp_executesql.
b) La unica forma de tomar el resultado del procedimiento y para
devolverlo en forma de Tabla seria haciendo un INSERT a una variable Tabla
(prohibido por declaracion de variable tabla) o a travez de una tabla
Temporal (Prohibido por la funciones).
Creo que es un callejon sin salida. Cuanto he tenido Tablas "iguales"
divididas por algun criterio (en tu caso mes) siempre hago una Vista que


es
el UNION ALL de todas las tablas participantes (Vistas Particionadas).
Tal vez te pueden seguir de guia el siguiente articulo:
SQL Dinamico: http://www.algonet.se/~sommar/dynamic_sql.html

Saludos


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

ALBERTO GUERRERO ZARO escribio:
> He estado trabajando con funciones que devuelven tablas, me gustaría
> saber si es posible crear una FUNCION con un parametro de ingreso
> que haga referencia a una tabla manejada en la instruccion select
> dentro de la misma FUNCION.
>
> Por ejemplo:
>
> CREATE FUNCTION dbo.tab_mesano()
> RETURNS TABLE
> AS
> RETURN (
> SELECT * FROM reg112003
> )
>
>
> Que la tabla "reg112003" ; sea parametrizable, debido que mi
> aplicacion genera tablas mensuales.
> Lo he visto en los procedimientos almacenados con la instruccion SET
> y luego EXEC, pero hasta ahora no en FUNCIONES.
>
> Gracias de Todas formas.
>
> Alberto Guerrero
>
> Copiapó-Chile


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida