PostgreSQL - Problemas con dblink

   
Vista:

Problemas con dblink

Publicado por Viviana (2 intervenciones) el 11/02/2009 14:06:34
Hola a todos por favor necesito que alguien me ayude a solucionar este problemita. Tengo la siguiente función de base de datos

[B]CREATE OR REPLACE FUNCTION actualizarusuario("prm-idusuario" "numeric", "prm-anulado" "bool")

select * into registro from dblink(conex,'select * from actualizarusuario('||"prm-idusuario"||','''||"prm-anulado"||''')')
as (anul_usuario_sp bool);[/B]

El parametro "prm-anulado" es de tipo booleano y cuando llamo esta función, por ejemplo, [B]select * from actualizarusuario(1,'f');[/B] me lanza el siguiente error

[B]Fallo de Ejecucion de funcion o consulta, error #:-1, El sistema respondio: ERROR: el operador no existe: text || boolean
HINT: Ningún operador coincide con el nombre y el tipo de los argumentos. Puede desear agregar conversiones explÃ*citas de tipos.
[/B]
Esto pasa porque ve el segundo parametro como un texto y no como un booleano
Como hago para que vea el parametro como un booleano y no como un texto?
Estoy pasando concatenando correctamente el pase del parametro "prm-anulado"?

Gracias por la ayuda que me puedan prestar
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas con dblink

Publicado por alejandro (1 intervención) el 17/02/2009 16:00:28
Hola,

Si tu problema es de reconocimiento de tipos prueba haciendo un cast aver si te funciona. Ejemplo : tu_variable::boolean. En todo caso yo verificaria la cantidad de comillas que estas abriendo para el dblink, en mi caso siempre ha sido un dolor de cabeza con la cantidad de comillas que uso cuando realizo operaciones de dblink ya que la cadena de operacion de tu select esta dentro de comillas y ahi es donde debes tener cuidado si agregas variables concatenadas.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con dblink

Publicado por Viviana (2 intervenciones) el 17/02/2009 18:42:38
Hola gracias por responder el problema era que al pasar un valor booleano en una cadena este no lo reconocia, es decir , para pasar un booleano tuve que colocar la siguiente validacion dentro del dblink:

CREATE OR REPLACE FUNCTION actualizarusuario("prm-idusuario" "numeric", "prm-anulado" "bool")

select * into registro from dblink(conex,'select * from actualizarusuario('||"prm-idusuario"||','''||CASE WHEN "prm-anulado" THEN 'true' ELSE 'false' END||''')')
as (anul_usuario_sp bool);

y listo funciono correctamente ... Adios y gracias :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con dblink

Publicado por Ana (1 intervención) el 17/01/2012 11:53:36
Hola,
Quiero hacer una función en postgres que se vaya conectando a distintas bases de datos. Y para ello necesito pasar la conexión parametrizada. Mi problema está en que el dblink no me funciona si le paso parámetros, solo me funciona si le paso el texto tal cual:
conection := 'dbname=bd1 port=5432 host= localhost user=user password=user' ;

CREATE VIEW miProcedRemoto AS
SELECT t.report
FROM dblink(conection , 'SELECT reports.report as nombreReport
FROM tabla_reports reports') as
t(nombreReport text);

Sale el siguiente error:
ERROR: no hay parámetro $1
LINE 1: ...EW miProcedRemoto AS SELECT t.report FROM dblink( $1 , 'SELE...


Sin embargo sí que funciona si pongo directamente:

CREATE VIEW miProcedRemoto AS
SELECT t.report
FROM dblink('dbname=bd1 port=5432 host= localhost user=user password=user' , 'SELECT reports.report as nombreReport
FROM tabla_reports reports') as
t(nombreReport text);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar