Tengo una función definida como:
FUNCTION insertar_log(varchar(30), varchar(500)) RETURNS void
Como ven no retorna valor, sin embargo cuando la invoco desde otra
función
pl/pgsql me obliga a colocar un destino para el valor devuelto:
ERROR: Error reiniciando saldos 42601 - la consulta no tiene un destino
para los datos de resultado
podrias mostrar la defincion de la funcion? y como la usas?
deberia funcionar como: select funcion();
/*************************************************************************/
CREATE OR REPLACE FUNCTION insertar_log(varchar(30), varchar(500))
RETURNS void AS
$BODY$
DECLARE
paccion ALIAS FOR $1;
pmensaje ALIAS FOR $2;
lCurrentDatabase varchar(30);
lCurrentUser varchar(30);
lCurrentPassword varchar(30);
lConnection varchar(100);
lSentence varchar(600);
lResult text;
BEGIN
/* Current database */
SELECT current_database()::varchar(20)
INTO lCurrentDatabase;
/* Current user */
SELECT current_user::varchar(20)
INTO lCurrentUser;
/* Current password */
lCurrentPassword := 'Unforgiven';
/* Connection */
lConnection := 'dbname=' || lCurrentDatabase || ' user=' || lCurrentUser ||
' password=' || lCurrentPassword;
SELECT dblink_connect('myconn', lConnection)
INTO lResult;
/* Insert log */
lSentence := 'INSERT INTO def_log(accion_log, mensaje_log) VALUES (''' ||
paccion || ''', ''' || pmensaje || ''');';
SELECT dblink_exec ('myconn', lSentence, false)
INTO lResult;
/* Disconnect */
SELECT dblink_disconnect('myconn')
INTO lResult;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
/*************************************************************************/
La uso:
SELECT insertar_log ('Reiniciar Saldos', 'inicia Proceso') INTO lResult;
Lo he solucionado temporalmente con un 'INTO' hacia una variable pero no
debería requerirse.
entonces si devuelve un valor...
Si, definitivamente.
Otra cosa que intente fue anteponerle a la consulta el 'PERFORM' pero me
genera un error de sintaxis.
perform funcion();
que error te da?
PERFORM SELECT insertar_log ('Reiniciar Saldos', 'inicia Proceso');
ERROR: error de sintaxis en o cerca de «SELECT»
LINE 1: SELECT SELECT insertar_log ('Reiniciar Saldos', 'inicia Pro...
^
QUERY: SELECT SELECT insertar_log ('Reiniciar Saldos', 'inicia Proceso')
CONTEXT: SQL statement in PL/PgSQL function "reiniciar_saldos" near line 22
********** Error **********
ERROR: error de sintaxis en o cerca de «SELECT»
SQL state: 42601
Context: SQL statement in PL/PgSQL function "reiniciar_saldos" near line 22
__________ Information from ESET NOD32 Antivirus, version of virus signature
database 4580 (20091106) __________
The message was checked by ESET NOD32 Antivirus.
http://www.eset.com
--
TIP 2: puedes desuscribirte de todas las listas simult�neamente
(env�a "unregister TuDirecci�nDeCorreo" a [email protected])