Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/07/2016, 14:27
Rebuilding
 
Fecha de Ingreso: julio-2014
Mensajes: 161
Antigüedad: 10 años, 5 meses
Puntos: 4
Procedure PostgreSQL

El error es cuando ejecuto el procedure, ni cuando lo creo me da errores, solo al hacer select prueba('5');

Mis tablas
Código SQL:
Ver original
  1. CREATE TABLE cfg_ima_rutas
  2. (
  3.   id INTEGER NOT NULL DEFAULT NEXTVAL('ima_rutas_id_seq'::regclass),
  4.   ruta text,
  5.   tipo INTEGER,
  6.   porcentaje INTEGER,
  7.   marca INTEGER
  8. )
  9. CREATE TABLE cfg_ima_marcas
  10. (
  11.   id INTEGER NOT NULL DEFAULT NEXTVAL('cfg_ima_marcas_id_seq'::regclass),
  12.   ruta text,
  13.   proporcion INTEGER
  14. )
Este es mi procedure

Código SQL:
Ver original
  1. CREATE OR REPLACE FUNCTION prueba(IN id_num INTEGER)
  2.   RETURNS TABLE(ruta text, tipo INTEGER, porcentaje INTEGER, marca INTEGER) AS
  3. 'DECLARE
  4. marca_opcion integer;
  5.  
  6. BEGIN
  7. marca_opcion="SELECT cfg_ima_rutas.marca FROM cfg_ima_rutas WHERE cfg_ima_rutas.id="||id_num;
  8.  
  9. IF(marca_opcion>0) THEN
  10. RETURN QUERY
  11.            SELECT
  12.        cfg_ima_rutas.ruta,  cfg_ima_rutas.tipo, cfg_ima_rutas.porcentaje, cfg_ima_rutas.marca, cfg_ima_marcas.ruta, cfg_ima_marcas.proporcion
  13.      FROM cfg_ima_marcas JOIN cfg_ima_rutas ON (cfg_ima_marcas.id = cfg_ima_rutas.marca) WHERE cfg_ima_rutas.id=id_num;
  14. ELSE
  15.    RETURN QUERY
  16.      SELECT
  17.         cfg_ima_rutas.ruta,  cfg_ima_rutas.tipo, cfg_ima_rutas.porcentaje, cfg_ima_rutas.marca
  18.      FROM cfg_ima_rutas WHERE cfg_ima_rutas.id=id_num;
  19. END IF;
  20.  
  21.  END;'
  22.   LANGUAGE plpgsql

no me da errores ni al insertar las tablas ni el procedure, solo cuando ejecuto el procedure

Código SQL:
Ver original
  1. SELECT prueba('5');
Código BASH:
Ver original
  1. ERROR:  column "SELECT cfg_ima_rutas.marca FROM cfg_ima_rutas WHERE cfg_ima_rut" does not exist
  2. LINE 1: SELECT "SELECT cfg_ima_rutas.marca FROM cfg_ima_rutas WHERE ...
  3.               ^
  4. QUERY:  SELECT "SELECT cfg_ima_rutas.marca FROM cfg_ima_rutas WHERE cfg_ima_rutas.id="||id_num
  5. CONTEXT:  PL/pgSQL function prueba(integer) line 4 at assignment

Última edición por Rebuilding; 19/07/2016 a las 15:07