Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Problemas para migrar procedimientos y funciones de POSTGRES a SQL SERVER 08

Estas en el tema de Problemas para migrar procedimientos y funciones de POSTGRES a SQL SERVER 08 en el foro de SQL Server en Foros del Web. Hola que tal a todos, bueno formulo mi pregunta. El tema es que tengo procedimientos y funciones en postgress(el cual nunca eh usado), y las ...
  #1 (permalink)  
Antiguo 06/03/2013, 09:45
Avatar de David_Carrera  
Fecha de Ingreso: marzo-2013
Ubicación: Talcahuano
Mensajes: 6
Antigüedad: 11 años, 1 mes
Puntos: 0
Problemas para migrar procedimientos y funciones de POSTGRES a SQL SERVER 08

Hola que tal a todos, bueno formulo mi pregunta.

El tema es que tengo procedimientos y funciones en postgress(el cual nunca eh usado), y las necesito migrar a sql server 2008 el cual tampoco había usado para pl/sql, me ayudaria mucho si me pudieran cooperar con este asunto, desde ya gracias...

P.D: la version del postgress es 8.4.
Código SQL:
Ver original
  1. -- Function: tablastemporales.reporte_total(refcursor, character)
  2.  
  3. -- DROP FUNCTION tablastemporales.reporte_total(refcursor, character);
  4.  
  5. CREATE OR REPLACE FUNCTION tablastemporales.reporte_total(pref refcursor, pnumot CHARACTER)
  6.   RETURNS refcursor AS
  7. $BODY$BEGIN
  8.     OPEN PREF FOR
  9.         SELECT
  10.         ot.numot,
  11.         ot.descripcion,
  12.         ot.gastosgenerales,
  13.         ot.utilidad,
  14.         ot.totalhh AS inyeccionhh,
  15.         hh.gastadashh,
  16.         ot.totalhh - hh.gastadashh AS quedanhh,
  17.         ot.valorcompras AS inyeccioncompras,
  18.         compras.gastadascompras,
  19.         ot.valorcompras - compras.gastadascompras AS quedancompras,
  20.         ot.valormanoobra AS inyeccionvalormanoobra,
  21.         manoobra.gastadasvalormanoobra,
  22.         ot.valormanoobra - manoobra.gastadasvalormanoobra AS quedanvalormanoobra
  23.     FROM ot
  24.     LEFT JOIN  
  25.     (
  26.         SELECT round(COALESCE(SUM(horatrato+horanormal+horaextra),0)) AS gastadashh,numot
  27.         FROM public.detallehora
  28.         GROUP BY numot
  29.     ) AS hh
  30.     ON(
  31.         hh.numot=ot.numot
  32.       )
  33.     LEFT JOIN
  34.     (
  35.         SELECT round(COALESCE(SUM(precioventa*cantidad),0)) AS gastadascompras,oc.numot
  36.         FROM controlbodegacompras.detalleoc,controlbodegacompras.oc
  37.         WHERE detalleoc.idoc = oc.idoc AND estado_oc=1  AND sw_cargada_a_ot=1        
  38.         GROUP BY oc.numot
  39.     ) AS compras
  40.     ON(
  41.         compras.numot=ot.numot
  42.       ),
  43.     (
  44.         SELECT frmvalorizacionhh AS gastadasvalormanoobra
  45.         FROM presupuestos.frmvalorizacionhh(pnumot)        
  46.     ) AS manoobra    
  47.     WHERE ot.numot=pnumot;
  48.  
  49.     RETURN PREF;
  50. END;$BODY$
  51.   LANGUAGE 'plpgsql' VOLATILE
  52.   COST 100;
  53. ALTER FUNCTION tablastemporales.reporte_total(refcursor, CHARACTER) OWNER TO postgres;

Última edición por gnzsoloyo; 06/03/2013 a las 10:56 Razón: SQL Mal etiquetado.
  #2 (permalink)  
Antiguo 06/03/2013, 10:09
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Problemas para migrar procedimientos y funciones de POSTGRES a SQL SERVER

es una funcion que retorna un valor utilizando un select de varias tablas, aqui el punto, en donde tienes problemas, que avance llevas?

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 06/03/2013, 11:47
Avatar de David_Carrera  
Fecha de Ingreso: marzo-2013
Ubicación: Talcahuano
Mensajes: 6
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Problemas para migrar procedimientos y funciones de POSTGRES a SQL SERVER

Mi problema es en la definición del cursor dentro de la funcion y luego recorrer ese mismo cursor....
  #4 (permalink)  
Antiguo 06/03/2013, 11:53
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Problemas para migrar procedimientos y funciones de POSTGRES a SQL SERVER

que es lo que te regresa ese cursor? porque un cursor lo puedes convertir en algo mas eficiente digamos un query anidado o una tabla temporal :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 06/03/2013, 12:02
Avatar de David_Carrera  
Fecha de Ingreso: marzo-2013
Ubicación: Talcahuano
Mensajes: 6
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Problemas para migrar procedimientos y funciones de POSTGRES a SQL SERVER

Según yo, ese cursor debe devolver los datos consultados en este select
Cita:
SELECT
ot.numot,
ot.descripcion,
ot.gastosgenerales,
ot.utilidad,
ot.totalhh AS inyeccionhh,
hh.gastadashh,
ot.totalhh - hh.gastadashh AS quedanhh,
ot.valorcompras AS inyeccioncompras,
compras.gastadascompras,
ot.valorcompras - compras.gastadascompras AS quedancompras,
ot.valormanoobra AS inyeccionvalormanoobra,
manoobra.gastadasvalormanoobra,
ot.valormanoobra - manoobra.gastadasvalormanoobra AS quedanvalormanoobra
  #6 (permalink)  
Antiguo 06/03/2013, 12:05
Avatar de David_Carrera  
Fecha de Ingreso: marzo-2013
Ubicación: Talcahuano
Mensajes: 6
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Problemas para migrar procedimientos y funciones de POSTGRES a SQL SERVER

Lo que tampoco me queda claro es que abajo en alguna consulta crea tablas a travez de consultas y luego usa los campos, eso se puede hacer en transact SQL?
  #7 (permalink)  
Antiguo 06/03/2013, 12:41
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Problemas para migrar procedimientos y funciones de POSTGRES a SQL SERVER

claro que se puede hacer puedes crear tablas temporales, o una tabla fisica, si lo que te regresa es una consulta pues puedes hacer una funcion que regrese una tabla :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 06/03/2013, 13:09
Avatar de David_Carrera  
Fecha de Ingreso: marzo-2013
Ubicación: Talcahuano
Mensajes: 6
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Problemas para migrar procedimientos y funciones de POSTGRES a SQL SERVER

Cita:
Iniciado por Libras Ver Mensaje
claro que se puede hacer puedes crear tablas temporales, o una tabla fisica, si lo que te regresa es una consulta pues puedes hacer una funcion que regrese una tabla :)

Ahora el tema es como hago una tabla temporal, podrias ayudarme en eso?
  #9 (permalink)  
Antiguo 06/03/2013, 13:16
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Problemas para migrar procedimientos y funciones de POSTGRES a SQL SERVER

create table #temp(
campos tipo
)

Ojo las tablas temporales solo estan disponibles para la sesion que se esta ejecutando en este caso solo estaran disponibles para la ejecucion del procedure...
:)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #10 (permalink)  
Antiguo 06/03/2013, 13:29
Avatar de David_Carrera  
Fecha de Ingreso: marzo-2013
Ubicación: Talcahuano
Mensajes: 6
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Problemas para migrar procedimientos y funciones de POSTGRES a SQL SERVER

Cita:
Iniciado por Libras Ver Mensaje
create table #temp(
campos tipo
)

Ojo las tablas temporales solo estan disponibles para la sesion que se esta ejecutando en este caso solo estaran disponibles para la ejecucion del procedure...
:)

Osea la tabla temporal solo se creara cuando sea llamado el procedimiento, ahora mi duda es, como uso la tabla temporal en vez del cursor??
  #11 (permalink)  
Antiguo 06/03/2013, 14:03
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Problemas para migrar procedimientos y funciones de POSTGRES a SQL SERVER

Aqui lo que tienes que saber es que hace tu cursor y una vez que tengas la logica del cursor es aplicarla a sql server :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: funciones, migrar, postgres, procedimiento, procedimientos, select, server, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:31.