Estoy intentando obtener un valor de un procedimiento almacenado, que
deberia devolver un numero entero, el problema que se me presenta es el
error que me arroja al ejecutar el comando execute
Las instrucciones en Vfp 8 son las siguientes
la coneccion es ADO y uso cursoradapter
FUNCTION AGREGAR
local lccmd
retvalor = 0
lccmd = "EXEC nuevoid '"+ALLTRIM(UPPER(this.calias))+"', @retvalor OUTPUT"
&& lcmd queda = "EXEC nuevoid 'PRODUCTO', @retvalor OUTPUT"
oCa = thisform.obtenercursor(this.calias)
Oconection = oca.datasource.activeconnection
oconection.execute("&lccmd") * se produce el error
append blank in (this.cAlias)
if retvalor<>0
repl id with retvalor in (this.calias)
endif
* texto del error
"Código de excepción OLE IDispatch 0 de Microsoft OLE DB Provider for SQL
Server: Debe declarar la variable '@retvalor'.
El procedimiento almacenado en MSDE es el siguiente
La ejecucion del procedimiento a travez del producto emans o visual studio
devuelve el valor correctamente
ALTER PROCEDURE dbo.NuevoId
@NameTable varchar(20),
@RetValor int Output
/*
(
@parameter1 datatype = default value,
@parameter2 datatype OUTPUT
)
*/
AS
/* SET NOCOUNT ON */
SELECT Name FROM SysObjects WHERE Name='KEYS' AND Type='U'
IF @@ROWCOUNT < 1
CREATE TABLE Keys ( TableName Char(20), LastKeyVal Integer )
SELECT LastKeyVal FROM Keys WHERE TableName=@NameTable
IF @@ROWCOUNT < 1
INSERT INTO Keys VALUES (@NameTable, 0 )
UPDATE Keys
SET @RetValor = LastkeyVal = LasTkeyVal + 1 WHERE
TableName=@NameTable
RETURN
Leer las respuestas