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

[SOLUCIONADO] reemplazo

Estas en el tema de reemplazo en el foro de PostgreSQL en Foros del Web. tengo el siguiente codigo para oracle pero debo modificarlo para poder utilizarlo en postgresql pero no encuentro los reemplazos alguien me puede ayudar. -------------------------------------------------------- -- ...
  #1 (permalink)  
Antiguo 08/04/2016, 13:29
Avatar de Rodrigo_Arenas  
Fecha de Ingreso: junio-2011
Mensajes: 44
Antigüedad: 13 años, 5 meses
Puntos: 0
reemplazo

tengo el siguiente codigo para oracle pero debo modificarlo para poder utilizarlo en postgresql pero no encuentro los reemplazos alguien me puede ayudar.


--------------------------------------------------------
-- DDL for Procedure ACT_ORGANIZACION
--------------------------------------------------------
set define off;

CREATE OR REPLACE PROCEDURE ACT_ORGANIZACION
(
v_idorg int,
v_user_log int
) AS

fechain date;
name_org varchar(150);

BEGIN

fechain := TO_DATE(sysdate, 'DD-MM-RR');

SELECT ORGANIZACION INTO name_org FROM SIS_ORGANIZACION WHERE ID_ORGANIZACION = v_idorg;

UPDATE SIS_ORGANIZACION
SET
START_DATE = fechain,
END_DATE = NULL,
ID_STATUS = 1
WHERE ID_ORGANIZACION = v_idorg;

-- Insert en el log de organizacion del registro de la accion
INSERT INTO SIS_ORGANIZACION_LOG
(
ID_LOG,
ID_USUARIO,
ID_ORGANIZACION,
FECHA,
DETALLE
)
VALUES
(
SEQ_ORG_LOG.NEXTVAL,
v_user_log,
v_idorg,
fechain,
concat(concat(concat('Reactivacion de Organizacion<br>Organizacion reactivada ID : ', v_idorg), ' - Organizacion : '), name_org)
);

END ACT_ORGANIZACION;

/

  #2 (permalink)  
Antiguo 08/04/2016, 13:30
Avatar de Rodrigo_Arenas  
Fecha de Ingreso: junio-2011
Mensajes: 44
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: reemplazo

Cita:
Iniciado por Rodrigo_Arenas Ver Mensaje
tengo el siguiente codigo para oracle pero debo modificarlo para poder utilizarlo en postgresql pero no encuentro los reemplazos alguien me puede ayudar.


--------------------------------------------------------
-- DDL for Procedure ACT_ORGANIZACION
--------------------------------------------------------
set define off;

CREATE OR REPLACE PROCEDURE ACT_ORGANIZACION
(
v_idorg int,
v_user_log int
) AS

fechain date;
name_org varchar(150);

BEGIN

fechain := TO_DATE(sysdate, 'DD-MM-RR');

SELECT ORGANIZACION INTO name_org FROM SIS_ORGANIZACION WHERE ID_ORGANIZACION = v_idorg;

UPDATE SIS_ORGANIZACION
SET
START_DATE = fechain,
END_DATE = NULL,
ID_STATUS = 1
WHERE ID_ORGANIZACION = v_idorg;

-- Insert en el log de organizacion del registro de la accion
INSERT INTO SIS_ORGANIZACION_LOG
(
ID_LOG,
ID_USUARIO,
ID_ORGANIZACION,
FECHA,
DETALLE
)
VALUES
(
SEQ_ORG_LOG.NEXTVAL,
v_user_log,
v_idorg,
fechain,
concat(concat(concat('Reactivacion de Organizacion<br>Organizacion reactivada ID : ', v_idorg), ' - Organizacion : '), name_org)
);

END ACT_ORGANIZACION;

/


la plabras reservadas son las que me complican como por ejemplo el
set define off;
  #3 (permalink)  
Antiguo 08/04/2016, 15:01
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: reemplazo

El set define off; es un comando para configurar el sqlplus. En postgresql, simplemente puedes omitir su uso. No tiene ninguna conotación con lo que hace el procedimiento.

Afortunadamente, postgresql y oracle se parecen bastante.

A simple vista, veo un par de diferencias:
En el llamado de la secuencia en el insert.
Código SQL:
Ver original
  1. Oracle -> SEQ_ORG_LOG.NEXTVAL
  2. Postgresql -> NEXTVAL('SEQ_ORG_LOG')

Y en la concatenación con el comando concat.
Código SQL:
Ver original
  1. Oracle -> concat(concat(concat('Reactivacion de Organizacion<br>Organizacion reactivada ID : ', v_idorg), ' - Organizacion : '), name_org)
Código SQL:
Ver original
  1. Postgresql -> 'Reactivacion de Organizacion<br>Organizacion reactivada ID : '|| v_idorg || ' Organizacion : '|| name_org

Este ultimo en postgresql, también es compatible con Oralce. Incluso, mucho mas limpio.

Saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #4 (permalink)  
Antiguo 11/04/2016, 06:09
Avatar de Rodrigo_Arenas  
Fecha de Ingreso: junio-2011
Mensajes: 44
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: reemplazo

bueno elimine lo del set define off;

pero aun tengo problemas para la ejecución ya que este comando
CREATE OR REPLACE PROCEDURE ACT_ORGANIZACION me da este
error de sintaxis en o cerca de «PROCEDURE»
  #5 (permalink)  
Antiguo 11/04/2016, 06:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: reemplazo

Siempre puedes acudir al manual de referencia de PosgreSQL:

35.11. Porting from Oracle PL/SQL
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 11/04/2016, 07:39
Avatar de Rodrigo_Arenas  
Fecha de Ingreso: junio-2011
Mensajes: 44
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: reemplazo

al final me quedo asi gracias por la ayuda me fue de mucha utilidad

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION dgac_task.act_organizacion(
  2.     v_idorg INTEGER,
  3.     v_user_log INTEGER)
  4.   RETURNS INTEGER AS
  5. $BODY$declare
  6.     fechain DATE;
  7.     name_org VARCHAR(150);
  8.  
  9. BEGIN
  10.  
  11. fechain := TO_DATE(sysdate, 'DD-MM-RR');
  12.  
  13. SELECT ORGANIZACION INTO name_org FROM DGAC_TASK.SIS_ORGANIZACION WHERE DGAC_TASK.ID_ORGANIZACION = v_idorg;
  14.  
  15. UPDATE DGAC_TASK.SIS_ORGANIZACION
  16. SET
  17.  START_DATE = fechain,
  18.  END_DATE = NULL,
  19.  ID_STATUS = 1
  20. WHERE ID_ORGANIZACION  = v_idorg;
  21.  
  22. -- Insert en el log de organizacion del registro de la accion  
  23. INSERT INTO DGAC_TASK.SIS_ORGANIZACION_LOG
  24.   (
  25.     DGAC_TASK.ID_LOG,
  26.     DGAC_TASK.ID_USUARIO,
  27.     DGAC_TASK.ID_ORGANIZACION,
  28.     DGAC_TASK.FECHA,
  29.     DGAC_TASK.DETALLE
  30.   )
  31.   VALUES
  32.   (
  33.     NEXTVAL('SEQ_ORG_LOG'),
  34.     v_user_log,
  35.     v_idorg,
  36.     fechain,
  37.     'Reactivacion de Organizacion<br>Organizacion reactivada ID : '|| v_idorg || ' Organizacion : '|| name_org);
  38.    
  39. END;
  40. $BODY$
  41.   LANGUAGE plpgsql STABLE
  42.   COST 100;
  43. ALTER FUNCTION dgac_task.act_organizacion(INTEGER, INTEGER)
  44.   OWNER TO postgres;

Última edición por gnzsoloyo; 11/04/2016 a las 08:28 Razón: Usar Highlight SQL, por favor.
  #7 (permalink)  
Antiguo 11/04/2016, 07:44
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: reemplazo

__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: reemplazo
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 07:22.