Forums Últimos mensajes - Powered by IBM
 
Tags Palabras claves

funcion

22/08/2006 - 15:40 por Andreu | Informe spam
hola,
Tengo una consulta del tipo

@a nvarchar(10)
@b nvarchar(10)

SELECT * from Tabla
WHERE
campo_A in (select valor from dbo.Funcion_Que_Crea_Tabla(@a))
AND
campo_B in (select valor from dbo.Funcion_Que_Crea_Tabla(@b))

O sea, en el where se comparan dos campos (campo_a y campo_b) con valores
provenientes de la ejecución de la función dbo.Funcion_Que_Crea_Tabla()
Mi pregunta es, esto funciona?
Porque la funcion, devuelve valores distintos en la misma tabla dependiendo
del valor del parámetro. Pero no sé si al estar dos veces en la misma
consulta, la tabla de la función se llena dos veces (primero para campo_A in
(select valor from dbo.Funcion_Que_Crea_Tabla(@a)), y luego para campo_B in
(select valor from dbo.Funcion_Que_Crea_Tabla(@b)))

No sé si se entiende mucho la pregunta.
Si alguien la ha entendido, me podria decir si esto puede funcionar?

Muchas grácias
 

Leer las respuestas

#1 Alejandro Mesa
23/08/2006 - 15:41 | Informe spam
Andreu,

Al parecer la funcion dbo.Funcion_Que_Crea_Tabla devuelve una tabla. Como le
pasas variables como parametros de entrada, te recominedo que captures el
resultado de la funcion en una tabla temporal y uses la tabla temporal en la
sentencia "select". Chequea en el plan de ejecucion para ver si SQL Server
invoca la funcion multiples veces.

create table #t1 (
c1 ...
)

create table #t2 (
c1 ...
)

insert into #t1 (c1...)
exec dbo.Funcion_Que_Crea_Tabla(@a)

insert into #t2 (c1...)
exec dbo.Funcion_Que_Crea_Tabla(@b)

SELECT * from Tabla
WHERE
campo_A in (select valor from #t1)
AND
campo_B in (select valor from #t2)
go


AMB

"Andreu" wrote:

hola,
Tengo una consulta del tipo

@a nvarchar(10)
@b nvarchar(10)

SELECT * from Tabla
WHERE
campo_A in (select valor from dbo.Funcion_Que_Crea_Tabla(@a))
AND
campo_B in (select valor from dbo.Funcion_Que_Crea_Tabla(@b))

O sea, en el where se comparan dos campos (campo_a y campo_b) con valores
provenientes de la ejecución de la función dbo.Funcion_Que_Crea_Tabla()
Mi pregunta es, esto funciona?
Porque la funcion, devuelve valores distintos en la misma tabla dependiendo
del valor del parámetro. Pero no sé si al estar dos veces en la misma
consulta, la tabla de la función se llena dos veces (primero para campo_A in
(select valor from dbo.Funcion_Que_Crea_Tabla(@a)), y luego para campo_B in
(select valor from dbo.Funcion_Que_Crea_Tabla(@b)))

No sé si se entiende mucho la pregunta.
Si alguien la ha entendido, me podria decir si esto puede funcionar?

Muchas grácias



Preguntas similares