PDA

Ver la Versión Completa : Cursor not returned from Query


Antoniov
29-08-2011, 12:10:35
Estoy usando Delphi XE y firebird 2.5.


Intento poner un StoredProc y me da el error "Cursor not returned from Query"

El procedimiento almacenado es muy simple, sólo tiene que devolver el siguiente código y funciona perfectamente porque lo he probado directamente desde la base de datos.

CREATE PROCEDURE SIGUIENTE_COD_MENSAJE
RETURNS(
NEXT_CODIGO INTEGER)
AS
BEGIN
set NOCOUNT ON;
NEXT_CODIGO = GEN_ID(MENSAJES_CODMENSAJE_GEN, 1);

SUSPEND;
END
;

Pero cuando lo pongo en Delphi y le quiero poner la propiedad "Active = TRUE" directamente en el DataModule, salta el dichoso error.

Uso tanto el SQLStoredProc como el TSQLDataSet y en todos da un error.
Esto lo usaba antes en Delphi 7 y funcionaba sin problemas.

Alguna sugerencia?

Antoniov
29-08-2011, 12:24:54
Lo del SET NOCOUNT ON se me coló, eso realmente no va.

He visto en algunos foros que con eso se solucionaba pero cuando lo intento poner en el procedure me da error.

Como ejemplo del procedimiento se puede poner cosa como este ejemplo simple, cualquier cosa da error.

CREATE PROCEDURE NEW_PROCEDURE
RETURNS(
RDO SMALLINT)
AS
BEGIN
Rdo = 5;

/* Procedure body */
SUSPEND;
END;

Casimiro Notevi
29-08-2011, 13:21:12
Aparentemente está bien, salvo lo del smallint, ya que los generadores devuelven ahora un bigint.
De todas formas, ¿lo has probado desde ibexpert o alguna herramienta similar?, para descartar que no es problema desde tu programa.

Antoniov
29-08-2011, 13:39:56
No es un problema del programa porque para probarlo no hay que añadir ni una línea de código, ni siquiera ejecutar el programa.

Crea un procedimiento en la base de datos de lo más simple.

Entra en Delphi, Pones el TSQLConnection
Poner el TSQLStoreProc apuntando al procedure creado

E intentas poner la propiedad Active a TRUE, y sale el error.

Esto no pasaba en Delphi 7.

Alguien tiene el Delphi XE y puede hacer una prueba?

Gracias

Casimiro Notevi
29-08-2011, 16:13:34
No es un problema del programa porque para probarlo no hay que añadir ni una línea de código, ni siquiera ejecutar el programa.
Alguien tiene el Delphi XE y puede hacer una prueba?

¿Entonces para qué quieres que lo pruebe otra persona?

Antoniov
29-08-2011, 16:47:08
El problema es que intentaba usar la propiedad Active en lugar de usar ExecProc.

Solucionado.

Gracias a todos.

Casimiro Notevi
29-08-2011, 17:05:53
Esto no pasaba en Delphi 7.

¿Entonces pasaba o no pasaba con D7?