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

Usar arrays en procedures

Estas en el tema de Usar arrays en procedures en el foro de PostgreSQL en Foros del Web. Estoy invocando mi procedure asi SELECT HT_COMPRAR(1,3,1,0,0,0,0,array[row('augustino','com')::text],'2011-01-01 00:00:00'); o asi SELECT HT_COMPRAR(1,3,1,0,0,0,0,array[('augustino','com')::text],'2011-01-01 00:00:00'); pero no se como usar el array dentro del procedure, el elemento ...
  #1 (permalink)  
Antiguo 08/05/2017, 12:39
 
Fecha de Ingreso: julio-2014
Mensajes: 161
Antigüedad: 10 años, 4 meses
Puntos: 4
Usar arrays en procedures

Estoy invocando mi procedure asi

SELECT HT_COMPRAR(1,3,1,0,0,0,0,array[row('augustino','com')::text],'2011-01-01 00:00:00');

o asi

SELECT HT_COMPRAR(1,3,1,0,0,0,0,array[('augustino','com')::text],'2011-01-01 00:00:00');

pero no se como usar el array dentro del procedure, el elemento de array, ya lo declare como array y todo pero al utilizarlo aqui es el problema

INSERT INTO ht_dominiordenado (idplanreal, dominio) VALUES (idplanrealdom, dominio[0]);

Me aparece como NULL

Como le hago?

Última edición por Rebuilding; 08/05/2017 a las 12:47
  #2 (permalink)  
Antiguo 08/05/2017, 13:55
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Usar arrays en procedures

Y para que quieres un array? sabias que una tabla es un array ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 08/05/2017, 15:21
 
Fecha de Ingreso: julio-2014
Mensajes: 161
Antigüedad: 10 años, 4 meses
Puntos: 4
Respuesta: Usar arrays en procedures

Cita:
Iniciado por Libras Ver Mensaje
Y para que quieres un array? sabias que una tabla es un array ;)
Gracias por contestar, si eso ya lo se, espero que me puedas orientar

Es que en un solo parametro del PROCEDURE debo enviar el nombre de un dominio, pero en el procedure voy a necesitar la extension y el nombre del dominio, entonces tengo 2 opciones

1. Enviar como array el nombre del dominio como parametro del procedure (Separando en uno elemento del array el nombre del dominio y en el otro la extension o sea "com", "net", etc

_______ o

2. Enviarlo como texto en un parametro

En este caso, ya lo intente pero ando batallando, asi:

Código PHP:
     SELECT string_to_array(dominio'.'INTO dominiopartes;
     
SELECT id INTO idplanrealdom FROM ht_planes3 WHERE extension=dominiopartes[1];
     
INSERT INTO ht_dominiordenado (idplanrealdominioVALUES (idplanrealdomdominiopartes[0]); 
En el anterior me devolvio NULL

Código PHP:
     SELECT unnest(string_to_array(dominio'.')) INTO dominiopartes;
     
SELECT id INTO idplanrealdom FROM ht_planes3 WHERE extension=dominiopartes[1];
     
INSERT INTO ht_dominiordenado (idplanrealdominioVALUES (idplanrealdomdominiopartes[0]); 
En este caso lo intente y me dio el siguiente error:

Código PHP:
ERROR:  el valor de array debe comenzar con «{» o información de dimensión
LINE 1
SELECT HT_COMPRAR(1,3,1,0,0,0,0,'augustino.com',2011-01-01 ... 

Última edición por Rebuilding; 08/05/2017 a las 15:30
  #4 (permalink)  
Antiguo 08/05/2017, 15:32
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Usar arrays en procedures

y porque no mandas una cadena digamos "midominio.com" y dentro del procedure la separas? que manejador de bases de datos usas?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 08/05/2017, 15:48
 
Fecha de Ingreso: julio-2014
Mensajes: 161
Antigüedad: 10 años, 4 meses
Puntos: 4
Respuesta: Usar arrays en procedures

Cita:
Iniciado por Libras Ver Mensaje
y porque no mandas una cadena digamos "midominio.com" y dentro del procedure la separas? que manejador de bases de datos usas?
uso postgresql, lo que intente con las funciones de

string_to_array
regexp_split_to_array
unnest y string_to_array

uno de los errores es que el array me lo devuelve NULL, o me da el error de
Código PHP:
 ERROR:  el valor de array debe comenzar con «{» o información de dimensión
LINE 1
SELECT HT_COMPRAR(1,3,1,0,0,0,0,'augustino.com',2011-01-01 ... 

Última edición por Rebuilding; 08/05/2017 a las 16:08
  #6 (permalink)  
Antiguo 08/05/2017, 20:56
 
Fecha de Ingreso: julio-2014
Mensajes: 161
Antigüedad: 10 años, 4 meses
Puntos: 4
Respuesta: Usar arrays en procedures

Ya mejor lo resolvi con split_part

Saludos y gracias por tu ayuda

Etiquetas: arrays, bases-de-datos-general, procedures, usar
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 03:56.