Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > PostgreSQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-05-2011
Ignacio Gentile Ignacio Gentile is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 15
Poder: 0
Ignacio Gentile Va por buen camino
Ayuda! ¿Cómo llamar a Procedimiento Almacenado?

Buenas!

Estoy tratando de llamar desde delphi 7 a un procedimiento almacenado de mi base de datos Postgre 8.4..Para la conexión uso los componentes Zeos.

Tiro al formulario un Zconection el cual tiene las propiedades para conectarse a la base de datos, lo cual anda bien..Luego para obtener el procedimiento almacenado tiro un ZStoredProc al que asocio con la conexión anterior y selecciono el procedimiento almacenado que quiero ejecutar..

Mi problema es que nose como pasarle el parámetro integer que necesito para ejecutarlo..

el codigo del procedimiento es el siguiente:

CREATE OR REPLACE FUNCTION "public"."obtener_notas" (
integer
)
RETURNS SETOF "public"."clientes-notas" AS
$body$
select * from "clientes-notas" where id_cliente = $1
$body$
LANGUAGE 'sql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100 ROWS 1000;


Por favor necesito ayuda para poder continuar con algo básico como llamar a un procedimiento almacenado. Disculpen soy novato jeje
Responder Con Cita
  #2  
Antiguo 04-05-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Pero desde sql o desde delphi?
Responder Con Cita
  #3  
Antiguo 04-05-2011
Ignacio Gentile Ignacio Gentile is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 15
Poder: 0
Ignacio Gentile Va por buen camino
desde delphi! Al tratar de ejecutar el prodecimiento como también al querer activarlo obtengo el error Unsopported Operation..
Responder Con Cita
  #4  
Antiguo 04-05-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Puedes poner el código que usas?
También puedes hacer una búsqueda en clubdelphi, se ha tratado en otras ocasiones.
Además tienes abajo de esta página varios enlaces que te pueden servir.
Responder Con Cita
  #5  
Antiguo 16-01-2012
Avatar de jejo1984
jejo1984 jejo1984 is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 39
Poder: 0
jejo1984 Va por buen camino
Si usas Tquery te pongo un ejemplo:
Código Delphi [-]
procedure Tfrm_mod_tip_inci.cmd_grabarClick(Sender: TObject);
var idtipoinci:string;
begin
  if(Trim(txt_tip_inci.text)='')then
  begin
  showmessage('Ingresa nombre de la Incidencia');
  txt_tip_inci.SetFocus;
  exit;
  end
  else if(Trim(txt_desc_tip_inci.text)='')then
  begin
  showmessage('Ingresa descripción de la incidencia');
  txt_desc_tip_inci.SetFocus;
  exit;
  end;
  //obtenemos el id
  idtipoinci:=lblidtipo.Caption;
  //fin
  SQLTransaction1.Rollback;
  SQLTransaction1.StartTransaction;
  Sqlmodifica_inci.Close;
  Sqlmodifica_inci.SQL.Clear;
  Sqlmodifica_inci.SQL.Text:='select * from update_tip_incidencia('''+trim(txt_tip_inci.Text)+''','''+trim(txt_desc_tip_inci.Text)+''','+idtipoi  nci+')';
  try
  Sqlmodifica_inci.ExecSQL;
  SQLTransaction1.Commit;
  showmessage('Se grabo correctamente');
  ModalResult := mrCancel;
  PQConnection1.Close;
  except
   on E: Exception do
   begin
    Showmessage( PChar( E.Message )+ 'Error de SQL');
    SQLTransaction1.EndTransaction;
  end;
  end;
end;
Responder Con Cita
  #6  
Antiguo 16-01-2012
Avatar de jejo1984
jejo1984 jejo1984 is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 39
Poder: 0
jejo1984 Va por buen camino
Aqui te pongo la funcion o procedimiento:
Código SQL [-]
CREATE OR REPLACE FUNCTION update_tip_incidencia(_tipinci character, _desctipinci character, _codinci integer)
  RETURNS boolean AS
$BODY$ 
begin
update tipo_incidencia set nom_tipo=_tipinci,descr_tipo=_desctipinci where idtipoinci=_codinci;
RETURN True;
exception
when integrity_constraint_violation then
RAISE NOTICE 'Rollback to savepoint';
RETURN False;
end;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
Responder Con Cita
  #7  
Antiguo 04-03-2012
Leviatan Leviatan is offline
Miembro
 
Registrado: oct 2005
Posts: 56
Poder: 19
Leviatan Va por buen camino
Hola:

Quizás ya hayas encontrado la solución a tu problema, pero de todos modos podrías hacer lo siguiente:

También podrías ejecutarlo colocando un objeto query de tus componentes Zeos sobre tu formulario y probar el siguiente código:

Código Delphi [-]
begin
  with Query do begin
    Close;
    SQL.Clear;
    SQL.Add('select * from obtener_notas(:id_cliente)');
    Params.ParamByName(':id_cliente').AsInteger := IdCliente;
    ExecSQL;
  end;
end;

Este es un pequeño ejemplo utilizando un componente TASQLite3Query de Aducom para la base de datos SQLite3. Nunca utilicé los componentes Zeos, pero no debería haber mucha diferencia.

Saludos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como mandar llamar un procedimiento almacenado desde delphi richy08 MS SQL Server 1 03-02-2010 02:06:23
ayuda de como Insertar registro con procedimiento almacenado y campo autoincremento El_Chava Firebird e Interbase 5 25-11-2008 07:57:42
llamar Procedimiento almacenado en una consulta tcp_ip_es MySQL 3 17-06-2008 13:47:38
Ayuda, como llamar a un procedimiento desde otro procedimiento? Ariatna Varios 1 01-02-2005 05:05:35
ayuda al llamar un procedimiento... ronimaxh Firebird e Interbase 8 27-04-2004 02:53:33


La franja horaria es GMT +2. Ahora son las 18:32:20.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi