consulta que combina tablas y funciones definidas por el usuario

44 views
Skip to first unread message

Luis suescún

unread,
Sep 9, 2019, 11:10:56 AM9/9/19
to Sistemas Gestores de Bases de Datos
Buenos días señores..

Me podrían recordar como es que puedo hacer una consulta en la que combino vistas o tablas con funciones de usuario ?

Mil gracias de antemano

tengo esta vista

numero referencia unidad descripcion cantidad precio val_total tarifaiva ITEM
01708002    407529              UNIDAD LLANTA 20 X 2.125 NEGRA F116      KYLIN 30.00 6150.00 184500.0000 19.00 16
01708002    407906              UNIDAD LLANTA 20X2.125 NEGRA      H501 CHAOYANG 20.00 8750.00 175000.0000 19.00 17

y necesito ponerla a incorporar un campo que retorna una vista que recibe como parámetro la referencia de la vista y una fecha y retorna la referencia y un una cadena que representa el código de un formulario. 

trabajo en Sql server 2012



Hernan Cano

unread,
Sep 9, 2019, 6:37:45 PM9/9/19
to Sistemas Gestores de Bases de Datos
select CAMPO1, CAMPO2, Funcion1() as FUNCION1, Funcion2(CAMPO1) as FUNCION2, Funcion3(CAMPO4, CAMPO5) as FUNCION3, Calculo4() as CALCULO4 from ARCHIVO1 into cursor TEMPORAL nofilter readwrite

Luis suescún

unread,
Sep 9, 2019, 7:09:17 PM9/9/19
to sistemas-gestores...@googlegroups.com
Gracias por responder Hernán...
Entre la vista(s) o tabla(s) y la funcion()
no hay un inner join o algo ?

Es que lo que me pasaste yo lo hice, pero me da error.

Mañana paso el error.

Un abrazo y de nuevo muchas gracias 

El lun., 9 sept. 2019 17:37, Hernan Cano <jherna...@gmail.com> escribió:
select CAMPO1, CAMPO2, Funcion1() as FUNCION1, Funcion2(CAMPO1) as FUNCION2, Funcion3(CAMPO4, CAMPO5) as FUNCION3, Calculo4() as CALCULO4 from ARCHIVO1 into cursor TEMPORAL nofilter readwrite

--
Has recibido este mensaje porque estás suscrito a un tema del grupo "Sistemas Gestores de Bases de Datos" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/sistemas-gestores-de-bases-de-datos/ae9RK0XaJNo/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a sistemas-gestores-de-ba...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/sistemas-gestores-de-bases-de-datos/d5d184eb-91fe-4759-9ef7-ef6cfcf833cc%40googlegroups.com.

Luis suescún

unread,
Sep 10, 2019, 10:29:30 AM9/10/19
to Sistemas Gestores de Bases de Datos

Lo que hago

Declare @ref char(8)
Set @ref='600535'
Declare @fecha date
Set @fecha='2019-09-09'

si la llamo así funciona
select * from fnc_hab_merc_formularioImportacion(@ref,@fecha)

la función...

ALTER FUNCTION [dbo].[fnc_hab_merc_formularioImportacion] (@ref char(8),@fecha date)
RETURNS TABLE 
AS
RETURN 
(
select top 1 m.id,strreferencia,m.strbl,strformulario,mf.dtmfecha from tbl_hab_merc_manifiesto m 
inner join  tbl_hab_merc_manifiestocomplemento mf 
on m.strbl=mf.strbl 
where m.id in(
select max(id) from (
select m.id,strreferencia,m.strbl,strformulario,mf.dtmfecha from tbl_hab_merc_manifiesto m 
inner join  tbl_hab_merc_manifiestocomplemento mf 
on m.strbl=mf.strbl where mf.dtmfecha<= @fecha) dt group by strreferencia) and strreferencia=@ref
order by dtmfecha desc

)

la consulta que hago

select a.*,fn.strformulario from detalle_postscript a left outer join fnc_hab_merc_formularioImportacion(a.referencia,@fecha) fn
on referencia=fn.strreferencia collate Modern_Spanish_CI_AS
where numero='01708002'

el error

Msg 4104, Level 16, State 1, Line 151
The multi-part identifier "a.referencia" could not be bound.

Quien me pueda decir que falta, que hay malo mil gracias


numero referencia unidad descripcion                               cantidad precio val_total         tarifaiva ITEM
00784134  104217      UNIDAD JGO CENTRO SM-BB4600 TIAGRA  104.00         19900.00 2069600.0000 16.00 1

quiero a este registro adicionarle el formulario que retorna la funcion para la referencia,llamando a la función con el parametro de la referencia y la fecha

lo que hago

Hernan Cano

unread,
Sep 10, 2019, 1:45:05 PM9/10/19
to sistemas-gestores...@googlegroups.com
>>> Entre la vista(s) o tabla(s) y la funcion() no hay un inner join o algo ?

Quizás sí.
Depende de lo que necesitas.

El lun., 9 de sep. de 2019 a la(s) 18:09, Luis suescún escribió:
Gracias por responder Hernán...
Entre la vista(s) o tabla(s) y la funcion()
no hay un inner join o algo ?

Es que lo que me pasaste yo lo hice, pero me da error.

Mañana paso el error.

Un abrazo y de nuevo muchas gracias 

Hernan Cano

unread,
Jun 17, 2022, 12:49:26 PM6/17/22
to Sistemas Gestores de Bases de Datos
Hola, colega.

El tema de procedimientos almacenados es específico de cada motor, así que no es fácil una respuesta genérica, pero considero que --una sintaxis correcta-- no puede ser

select * from fnc_hab_merc_formularioImportacion(..........

teniendo en cuenta que fnc_hab_merc_formularioImportacion es una función creada dentro de MySQL (por lo q se ve en lo q escribes).

Sería bueno saber si pudiste resolver tu duda y cómo te ha ido después.
Reply all
Reply to author
Forward
0 new messages