![]() |
Procedimiento almacenado desde Delphi
Hola a todos,
Como puedo llamar a un procedimiento almacenado desde delphi, estoy usando ADO. El codigo del procedure es:
|
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 Luis Garcia |
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 |
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. |
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 |
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 |
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 |
La franja horaria es GMT +2. Ahora son las 15:39:36. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi