Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   Store Procedure (https://www.clubdelphi.com/foros/showthread.php?t=51727)

sépoco 27-12-2007 04:14:44

Store Procedure
 
Llamo un Store Procedure pero al activarlo aparece este mensaje:

raised exception class with ENoResultSet with message "Error creating cursor handle"

A alguien le ha pasado o conoce cómo solucionar esto?

jachguate 27-12-2007 04:47:05

A menos que el stored procedure devolviera un conjunto de datos, como podría ocurrir con firebird, no tenes que activarlo, simplemente ejecutarlo con ExecProc.

Hasta luego.

;)

droguerman 27-12-2007 18:01:15

puedes mostrar algo de código?, osea de tu procedimiento

Nomad 27-12-2007 21:24:20

A mi me gustaria saber como se llama un procedimiento almacenado.

Yo uso para hacer las consultas a la DB y ADOQuery, no se si sirve...

En fin cualquier comentario es bien recibido.

Saludos

Nomad(CR)

jcarteagaf 10-01-2008 15:53:00

Stores Procedures
 
Para usar Stored procedures con los componentes ADO yo hago lo siguiente en mis programas:
Ejemplo de Stored Procedure:
Código SQL [-]
CREATE PROCEDURE Actualizacion
@Param1 int,
@Llave int
AS 
BEGIN
  SET NOCOUNT ON
  UPDATE TABLA
  SET VALOR=@PARAM1
  WHERE LLAVE=@LLAVE
END
En mi formulario o en un modulo de datos coloco un componente TAdoStoredProc, asigno sus propiedades (Connection, ProcedureName) y verifico que sus parameters esten correctos (basta con abrir la ventana de parameters). Luego ejecuto la llamada de la siguiente forma:

Código Delphi [-]
with AdoStoredProc1, Parameters do
begin
  Parambyname('@PARAM1').value := ValorParametro1;
  Parambyname('@LLAVE').value := ValorLlave;
  ExecProc;
end;

Ahora si mi stored Procedure devuelve registros hago lo siguiente:

Código SQL [-]
CREATE PROCEDURE ListaDatos
@Param1 int,
@Param2 int
AS 
BEGIN
  SET NOCOUNT ON
  SELECT CAMPO1,CAMPO2,CAMPO3
  WHERE CAMPON=@Param1 AND CampoX=@Param2
  ORDER BY Campo1
END

Y la llamada seria algo asi:

Código Delphi [-]
with AdoStoredProc2, Parameters do
begin
  Parambyname('@PARAM1').value := ValorParametro1;
  Parambyname('@PARAM2').value := ValorParametro2;
  Open;  // O tambien Active := True;
end;

Estos son ejemplos basicos, faltaria la captura de excepciones, pero creo que como base sirve.

Saludos

Nomad 10-01-2008 16:11:54

Ok, gracias voy a probarlo...


La franja horaria es GMT +2. Ahora son las 19:08:36.

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