Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/08/2010, 09:01
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Ejecutar consulta como cadena a procedimiento almacenado

Con un ejemplo
Código SQL:
Ver original
  1. pruebas=> CREATE TABLE tabla(id INTEGER);
  2. CREATE TABLE
  3.  
  4. pruebas=> CREATE OR REPLACE FUNCTION insertar(INTEGER)
  5. pruebas->   RETURNS text AS
  6. pruebas-> $BODY$
  7. pruebas$> DECLARE
  8. pruebas$> i INTEGER;
  9. pruebas$> stmnt  text;
  10. pruebas$> inser text;
  11. pruebas$> BEGIN
  12. pruebas$> stmnt = 'insert into tabla values(' || $1 || ')';
  13. pruebas$> EXECUTE stmnt;
  14. pruebas$> RETURN 'INSERTO';
  15. pruebas$> END; $BODY$
  16. pruebas->   LANGUAGE 'plpgsql' VOLATILE;
  17. CREATE FUNCTION
  18. pruebas=> SELECT *FROM tabla;
  19. PRUEBAS
  20.  id
  21. ----
  22. (0 filas)
  23.  
  24. pruebas=> SELECT insertar(500);
  25.  PRUEBAS
  26.  insertar
  27. ----------
  28.  INSERTO
  29. (1 fila)
  30.  
  31. pruebas=> SELECT *FROM tabla;
  32. PRUEBAS
  33.  id
  34. -----
  35.  500
  36. (1 fila)
  37.  
  38. pruebas=> CREATE OR REPLACE FUNCTION insertar1(text)
  39. pruebas->   RETURNS text AS
  40. pruebas-> $BODY$
  41. pruebas$> BEGIN
  42. pruebas$> EXECUTE $1;
  43. pruebas$> RETURN 'INSERTO';
  44. pruebas$> END; $BODY$
  45. pruebas->   LANGUAGE 'plpgsql' VOLATILE;
  46. CREATE FUNCTION
  47. pruebas=> SELECT insertar1('INSERT INTO tabla VALUES(800)');
  48.   PRUEBAS
  49.  insertar1
  50. -----------
  51.  INSERTO
  52. (1 fila)
  53.  
  54. pruebas=> SELECT *FROM tabla;
  55. PRUEBAS
  56.  id
  57. -----
  58.  500
  59.  800
  60. (2 filas)

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming