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

Como puedo retornar los campos de procedimiento almacenados

Estas en el tema de Como puedo retornar los campos de procedimiento almacenados en el foro de PostgreSQL en Foros del Web. Hi mundillo Posgreniana el termino. Mi consulta es la siguiente tengo un procedimiento almacenado a este recibe dos parámetros, luego hace un query devolviendo una ...
  #1 (permalink)  
Antiguo 25/10/2006, 08:24
 
Fecha de Ingreso: marzo-2003
Mensajes: 524
Antigüedad: 21 años, 8 meses
Puntos: 2
Como puedo retornar los campos de procedimiento almacenados

Hi mundillo Posgreniana el termino. Mi consulta es la siguiente tengo un procedimiento almacenado a este recibe dos parámetros, luego hace un query devolviendo una cantidad X registros. Como puedo yo retornar esa cantidad de X de registro yo al Retorno (Return) del Procedimientos lo tengo declarado como “Text” ahora no se si se encuentra bien implementado o declarar otro tipo de retorno

Código PHP:
CREATE FUNCTION sp_usuario(IN NOMBRE "varchar"IN CLAVE "varchar"RETURNS text AS $$
DECLARE
 
NOMBRE ALIAS FOR $1;
 
CLAVE ALIAS FOR $2;
BEGIN

    SELECT USU_NOMBRE
,
        
USU_PASSWORD
    FROM USUARIO
    WHERE
        USU_NOMBRE  
NOMBRE AND
        
USU_PASSWORD CLAVE;
 RETURN 
USUARIO.USUA_NOMBRE || USUARIO.USA_PASSWORD;
END;
$$ 
LANGUAGE plpgsql

Luego en Analizados de consulta de PgAdmin coloco

Código PHP:
select sp_usuario('aGonzales''panel'
Me devuelve el siguiente error

Código PHP:
ERROR:  SELECT query has no destination for result data
HINT
:  If you want to discard the results, use PERFORM instead.
CONTEXT:  PL/pgSQL function "sp_usuario" line 6 at SQL statement 
mi otra consulta es la siguiente como puedo hacer yo una condicion para saber si existe un procedimientos almacenado dentro del BD y si existe que la elimine

Última edición por Escorpion_Negro; 25/10/2006 a las 10:21
  #2 (permalink)  
Antiguo 25/10/2006, 13:45
foo
 
Fecha de Ingreso: febrero-2006
Mensajes: 278
Antigüedad: 18 años, 9 meses
Puntos: 0
lee la documentacion, ahi esta explicado todo lo que preguntas
  #3 (permalink)  
Antiguo 25/10/2006, 17:50
 
Fecha de Ingreso: octubre-2006
Mensajes: 3
Antigüedad: 18 años
Puntos: 0
deberìas crear un tipo

Primero creas un tipo con campos del mismo tipo que necesitas retornar:

CREATE TYPE tu_tipo AS
(NOMBRE VARCHAR,
CLAVE VARCHAR);

despues le pones como tipo de retorno a tu funcion el tipo que definiste:

CREATE FUNCTION sp_usuario(IN NOMBRE "varchar", IN CLAVE "varchar") RETURNS tu_tipo AS $$
DECLARE......

despues declaras una variable interna del tipo en cuestion dentro de tu funcion:

DECLARE
variable tu_tipo;

luego asignas el resultado de la consulta q esta en el cuerpo de la funcion a la variable que creaste:

SELECT INTO variable USU_NOMBRE,
USU_PASSWORD
FROM USUARIO
WHERE
USU_NOMBRE = NOMBRE AND
USU_PASSWORD = CLAVE;

y finalmente retornas la variable:

RETURN variable;

cuando ejecutes esta funcion traera los campos resultantes como si fuera una 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 11:53.