UNION dentro de funciones???

20/08/2003 - 21:15 por johny | Informe spam
hola gupro:

bueno espero que no les este molestando con mis preguntas.

pero algunos de ustedes sabe si puedo usar la opcion
UNION, dentro de una funcion

por que tengo entendido que puedo usar : instrucciones Transact-SQL

gracias.

Preguntas similare

Leer las respuestas

#1 Miguel Egea
20/08/2003 - 23:46 | Informe spam
Si, no hay ningún problema, si para tu caso es lo mismo, no obstante yo
usaría union all


=SALVA A SQL,
MATA UN CURSOR

Miguel Egea
http://www.portalsql.com
Microsoft SQL-SERVER MVP.
Brigada Anti-Cursores
==
"johny" escribió en el mensaje
news:%

hola gupro:

bueno espero que no les este molestando con mis preguntas.

pero algunos de ustedes sabe si puedo usar la opcion
UNION, dentro de una funcion

por que tengo entendido que puedo usar : instrucciones Transact-SQL

gracias.



Respuesta Responder a este mensaje
#2 Javier Loria\(MVP\)
21/08/2003 - 20:20 | Informe spam
Hola Johny:
No se si fue en el ejemplo que escribiste pero tiene varios errores:
a) En la declaracion de la Tabla a cantidad le falta el tipo.
b) Sobran comas en el Select despues de cada cantidad
c) En el UNION solo hay un ORDER BY al final. La razon es que en UNION
filtrara las filas que son iguales (que tienen todos las columnas iguales)
por lo que ordena para eliminarlas, tu ORDER BY se aplica al resultado de
este ordenamiento, no directamente a las tablas.

Saludos,


Javier Loria
Costa Rica (MVP)
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.

johny escribio:
hola miguel, primeramente,
gracias por responderme.

pero cuando uso eso me sale el siguiente mensaje "sintaxis incorrecta
acerca de la palabra clave UNION"

ejemplo:

create FUNCTION dbo.ejemplo_3
(@id_dominio int, @fecha_inicial VARCHAR(50),@fecha_final VARCHAR(50))
returns @tabla table (id_inv int,cantidad)
AS
BEGIN
insert into @tabla
SELECT id_inv,cantidad, FROM tabla1 ORDER BY id_inv
UNION
SELECT id_inv,cantidad, FROM tabla2 ORDER BY id_inv
RETURN
END

ese es mas o menos la transaccion que uso.

alguna solucion,
gracias de antemano.

saludos johny.




"Miguel Egea" escribió en el mensaje
news:#
Si, no hay ningún problema, si para tu caso es lo mismo, no obstante
yo usaría union all


=>> SALVA A SQL,
MATA UN CURSOR

Miguel Egea
http://www.portalsql.com
Microsoft SQL-SERVER MVP.
Brigada Anti-Cursores
==>>
"johny" escribió en el mensaje
news:%

hola gupro:

bueno espero que no les este molestando con mis preguntas.

pero algunos de ustedes sabe si puedo usar la opcion
UNION, dentro de una funcion

por que tengo entendido que puedo usar : instrucciones Transact-SQL

gracias.
Respuesta Responder a este mensaje
#3 Miguel Egea
22/08/2003 - 09:17 | Informe spam
tu problema con esa función creo que es como has puesto el order by, prueba
esto

create function a (@tipo1 as nvarchar(2),@tipo2 as nvarchar(2))
returns @tabla table (nombre sysname)
as
begin
insert into @tabla
select name from sysobjects where xtype=@tipo1
union all
select name from sysobjects where xtype=@tipo2
order by 1
return
end
go

select * from dbo.a('U','TR')

Saludos Cordiales
=Proxima reunión virtual sobre rendimiento.
Messenger:
Miguel Egea
http://www.portalsql.com
Microsoft SQL-SERVER MVP.

¡Cuida el rendimiento! Evita los cursores
Brigada Anti-Cursores
==

"johny" escribió en el mensaje
news:#
hola Javier:

gracias, por darte la molestia de revisar linea, por linea,
la verdad es que la funcion era mas grande, asi que tube que reducirle,


sin
darme cuenta en la sintaxis, y cometi algunos errores. al simplificar.

Pero lo que mas me interesa es que realizace la UNION, lo probe, sin los
order by
y no sale error de sintaxis, pero no estyo muy seguro si el resultado es
realmente confiable, por que los datos son de unos 50.000 registros, por


que
con datos pequeños no presenta muchos problemas que con datos mas grandes.

A loque me iva, es que segun lo que me dices, no es necesario que uso


ORDER
BY. en la UNION ?????
Si no al resultado, cierto???
gracias.


"la felicidad esta en unir el presente con el pasado"


"Javier Loria(MVP)" escribió en el mensaje
news:
> Hola Johny:
> No se si fue en el ejemplo que escribiste pero tiene varios errores:
> a) En la declaracion de la Tabla a cantidad le falta el tipo.
> b) Sobran comas en el Select despues de cada cantidad
> c) En el UNION solo hay un ORDER BY al final. La razon es que en


UNION
> filtrara las filas que son iguales (que tienen todos las columnas


iguales)
> por lo que ordena para eliminarlas, tu ORDER BY se aplica al resultado


de
> este ordenamiento, no directamente a las tablas.
>
> Saludos,
>
>
> Javier Loria
> Costa Rica (MVP)
> 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.
>
> johny escribio:
> > hola miguel, primeramente,
> > gracias por responderme.
> >
> > pero cuando uso eso me sale el siguiente mensaje "sintaxis incorrecta
> > acerca de la palabra clave UNION"
> >
> > ejemplo:
> >
> > create FUNCTION dbo.ejemplo_3
> > (@id_dominio int, @fecha_inicial VARCHAR(50),@fecha_final VARCHAR(50))
> > returns @tabla table (id_inv int,cantidad)
> > AS
> > BEGIN
> > insert into @tabla
> > SELECT id_inv,cantidad, FROM tabla1 ORDER BY id_inv
> > UNION
> > SELECT id_inv,cantidad, FROM tabla2 ORDER BY id_inv
> > RETURN
> > END
> >
> > ese es mas o menos la transaccion que uso.
> >
> > alguna solucion,
> > gracias de antemano.
> >
> > saludos johny.
> >
> >
> >
> >
> > "Miguel Egea" escribió en el mensaje
> > news:#
> >> Si, no hay ningún problema, si para tu caso es lo mismo, no obstante
> >> yo usaría union all
> >>
> >>
> >> => > >> SALVA A SQL,
> >> MATA UN CURSOR
> >>
> >> Miguel Egea
> >> http://www.portalsql.com
> >> Microsoft SQL-SERVER MVP.
> >> Brigada Anti-Cursores
> >> ==> > >>
> >> "johny" escribió en el mensaje
> >> news:%
> >>>
> >>> hola gupro:
> >>>
> >>> bueno espero que no les este molestando con mis preguntas.
> >>>
> >>> pero algunos de ustedes sabe si puedo usar la opcion
> >>> UNION, dentro de una funcion
> >>>
> >>> por que tengo entendido que puedo usar : instrucciones Transact-SQL
> >>>
> >>> gracias.
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida