Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-10-2006
hmv hmv is offline
Miembro
 
Registrado: oct 2006
Posts: 12
Poder: 0
hmv Va por buen camino
Procedimiento almacenado desde Delphi

Hola a todos,

Como puedo llamar a un procedimiento almacenado desde delphi, estoy usando ADO. El codigo del procedure es:
Código SQL [-]
create procedure guardar_categoria
@cat_name varchar(50),
@cat_description varchar(200)
as
 
insert into categoria(cat_name,cat_description) values(@cat_name,@cat_description)
Responder Con Cita
  #2  
Antiguo 28-10-2006
lgarcia lgarcia is offline
Miembro
 
Registrado: jul 2004
Posts: 479
Poder: 20
lgarcia Va por buen camino
SP desde Delphi

Hola:

Para llamar un SP desde Delphi debes hacer lo siguiente tienes que poner un ADOStoredProcedure en el formulario realizar la conexion con la BD y buscar el nombre del procedimiento en la propiedad procedurename y despues usar el siguiente codigo
Código:
with Insertar do
          begin
            Parameters.ParamByName('@cat_name').Value:= editcatname.Text;
            Parameters.ParamByName('@cat_description').Value:= editcatname.Text;
            Prepared:= True;
            ExecProc;
          end;
Espero haberte ayudado

Luis Garcia
Responder Con Cita
  #3  
Antiguo 28-10-2006
hmv hmv is offline
Miembro
 
Registrado: oct 2006
Posts: 12
Poder: 0
hmv Va por buen camino
Gracias por tu ayuda,
Hice lo que me dijiste, pero me sale un error:

Insertar: Paramater '@cat_name' not found

Gracias nuevamente

Uso SQLServer 2000
Responder Con Cita
  #4  
Antiguo 28-10-2006
hmv hmv is offline
Miembro
 
Registrado: oct 2006
Posts: 12
Poder: 0
hmv Va por buen camino
Ya esta solucionado,

Lo q pasa es que el componente hacia referencia a otro SP jejej

Gracias

Y como seria el codigo para recibir un parametro de salida, ejemplo q me devuelva el codigo de la categoria.

Última edición por hmv fecha: 28-10-2006 a las 18:29:59.
Responder Con Cita
  #5  
Antiguo 05-01-2010
Avatar de Jac fcc
Jac fcc Jac fcc is offline
Miembro
 
Registrado: ene 2010
Posts: 33
Poder: 0
Jac fcc Va por buen camino
Question alternativa al proc

En delphi, ademas de crear una instancia del procedimiento almacenado para ejecutarlo, existe alguna otra?

Lo pregunto por que deseo solo llamar al procedimiento sin tener la necesidad de crear una instancia ADOStoreProcedure

de antemano agradezco su apoyo
Responder Con Cita
  #6  
Antiguo 06-01-2010
Avatar de Jac fcc
Jac fcc Jac fcc is offline
Miembro
 
Registrado: ene 2010
Posts: 33
Poder: 0
Jac fcc Va por buen camino
dudas proc

Hola de nuevo, espero contar con su apoyo:

tengo un proc almacenado llamado Calcular que recibe un parametro entero
> ALTER procedure CALCULAR @folio int

cuando lo ejecuto desde el analizador de consultas de SQL todo correcto.
> Execute Calcular 103 --asi llamo

Pero cuando quiero ejecuar desde Delphi me aparece que el campo no lo encuentra:
"StoredProc:Parameter '@folio' not found"

He intentado de varias formas, agregue el TstoredProc y el folio lo tomo de un Tedit:

try
StoredProc.DatabaseName:='nomDB';
StoredProc.StoredProcName:='Calcular';
//storedProc.Params.ParamByName('@folio').AsInteger:=StrToInt(Folio.Text);
//storedProc.Params.ParamByName('folio').AsInteger:=StrToInt(Folio.Text);
//storedProc.ParamByName('@folio').AsInteger:=StrToInt(Folio.Text);
//storedProc.ParamByName('@folio').Value:=StrToInt(Folio.Text);
//storedProc.ParamByName('@folio').Value:=Folio.Text;
//storedProc.ParamByName('folio').Value:=Folio.Text;
//storedProc.Params.ParamByName('@folio').Value:=Folio.Text;
//storedProc.Params.ParamValues['@folio']:=Folio.Text;
storedProc.Params.ParamValues[Folio.Text];
storedProc.Prepared:=true;
storedProc.ExecProc;
Finally
storedProc.Free;
end;

Entiendo que el parametro lo tengo que enviar de alguna de estas maneras pero coloque lo que coloque aparece siempre esa leyenda.
supongo que me falta hacer algo pero no tengo idea que.

uso la version SQL 8.0 y borlanddelphi 7.0

gracias x su apoyo
Responder Con Cita
  #7  
Antiguo 06-01-2010
Avatar de Jac fcc
Jac fcc Jac fcc is offline
Miembro
 
Registrado: ene 2010
Posts: 33
Poder: 0
Jac fcc Va por buen camino
solucion

Despues de varias pruebas, ya tengo incluso varias soluciones:
//***con un storedproc
try
storedProc1.DatabaseName:='DataBase';
storedProc1.StoredProcName:='Calcular';
storedProc1.Params.Clear;
folio_:=TParam.Create(storedProc1.Params, ptInput);
storedProc1.Params[0].Name:='folio';
storedProc1.ParamByName('folio').AsInteger:=StrToInt(Folio.Text);
storedProc1.ExecProc;
except
//manejo de error
end;
//****con un adoStoredProc
StoredProc.Connection:=Adoconnection;
StoredProc.ProcedureName:='Calcula';
storedProc.Parameters.AddParameter;
try
StoredProc.Parameters[0].Value:=Folio.Text;
StoredProc.ExecProc;
except begin
//manejo de error
end;
end;
//****con un adoCommand
Command.CommandType:=cmdStoredProc;
Command.Connection:=Adoconnection;
Command.CommandText:='Calcula';
try
Command.Parameters.Refresh;
Command.Parameters.ParamByName('@folio').Value:=folio;
Command.Execute;
except begin
//manejo de error
end;//except
end;

Lo escribo por si a algun novato como yo le es de ayuda
Responder Con Cita
Respuesta



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
insertar desde un procedimiento almacenado Gabriel2 Firebird e Interbase 5 28-10-2005 17:48:29
Desactivar trigger desde procedimiento almacenado oliverinf Firebird e Interbase 5 09-10-2004 16:17:45
Crear un proceso almacenado desde Delphi chemoide Firebird e Interbase 1 09-09-2004 13:41:05
Procedimiento Almacenado Ulises Providers 3 30-01-2004 18:14:58
Como Ejecutar Un Query Desde Un Procedimiento Almacenado multisof Firebird e Interbase 2 04-11-2003 06:15:28


La franja horaria es GMT +2. Ahora son las 10:33:11.


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