Error en Procedimiento Almacenado

220 views
Skip to first unread message

integral

unread,
Jun 24, 2024, 2:14:13 PM (9 days ago) Jun 24
to Comunidad de Visual Foxpro en Español
Que tal Amigos

Buenas Tardes

Estoy teniendo problemas con el siguiente SP 

CREATE PROCEDURE AñoActual
    @anio INT,
    @nr INT OUTPUT
 
AS
BEGIN
    SELECT Fecha_Con, registro, cod_gene, prod_gene, prod_name, ruta_prod, hora_con,                       stock_min, fec_ing, fec_sal, stock_ini, cant_sal, obs_prod, descrip, mens_stock,
                   stock_act, ultimo_con, dias_consu
     FROM dbo.Stock
     WHERE YEAR(Fecha_Con) = YEAR(getdate());

    SELECT @nr = @@ROWCOUNT;

END;
GO

DECLARE @nreg INT;
DECLARE @anio INT;

EXEC AñoActual @anio OUTPUT

El Mensaje del Error :

Ya hay un objeto con el nombre "AñoActual" en la Base de Datos

PD : También cuando utilice como nombre del SP "Año_Actual", me marcaba error. Pero le quite el guion...

Agradezco sus comentarios y sugerencias.

Saludos,

Integral

Mik

unread,
Jun 24, 2024, 2:21:57 PM (9 days ago) Jun 24
to Comunidad de Visual Foxpro en Español
Verifica si efectivamente ya existe el Store en la base de datos. 

En ese caso cambia  CREATE PROCEDURE AñoActual por  ALTER PROCEDURE AñoActual.

Saludos!!

Gerardo Cagnola

unread,
Jun 24, 2024, 9:28:18 PM (8 days ago) Jun 24
to publice...@googlegroups.com
estas haciendo un count() con un procedure?
para que traes datos con el select si solo contas registros???


--
Blog de la Comunidad Visual FoxPro en Español http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/9c910817-679c-41a8-8862-4a10872a06bcn%40googlegroups.com.

Dsan

unread,
Jun 24, 2024, 11:52:52 PM (8 days ago) Jun 24
to publice...@googlegroups.com

CREATE OR ALTER PROCEDURE Nombre del SP

Yo no usaría ñ si un dia queres ir a Linux flas 👎👎 mis consultas nombre de tablas procuro hacerlo la primera letra mayuscula luego todo minuscula..

saludos

DS



integral

unread,
Jun 25, 2024, 12:30:55 AM (8 days ago) Jun 25
to Comunidad de Visual Foxpro en Español
Buenas Noches


ALTER PROCEDURE [dbo].[AñoActual]

    @anio INT,
    @nr INT OUTPUT
 
AS
BEGIN
    SELECT Fecha_Con, registro, cod_gene, prod_gene, prod_name, ruta_prod, hora_con, stock_min,  
                    fec_ing, fec_sal, stock_ini, cant_sal, obs_prod, descrip, mens_stock, stock_act, ultimo_con, dias_consu
        FROM dbo.Stock
    WHERE YEAR(Fecha_Con) = YEAR(getdate());

    SELECT @nr = @@ROWCOUNT;

END;

EXEC AñoActual @anio OUTPUT;

La idea es que el SP me muestre todos los registros que corresponden al año en curso...
 
Ahora me indica como error lo siguiente:

Debe declarar la variable escalar '@anio'

Agradezco vuestra ayuda.

Atte.,

Integral
Message has been deleted
Message has been deleted

Jorge Zapata

unread,
Jun 28, 2024, 5:06:29 PM (5 days ago) Jun 28
to Comunidad de Visual Foxpro en Español
Prueba a ejecutar este script, y aplicalo a tu sp.

CREATE PROCEDURE [dbo].[AñoActual]

 @anio INT,
 @nr INT OUTPUT
AS
BEGIN
    SELECT GETDATE()     WHERE YEAR(GETDATE()) = @anio;

    SELECT @nr = @@ROWCOUNT;
END;

-- Correlo desde sql recuperando la variable retorno

DECLARE  @retrorno INT
EXEC AñoActual 2024,@retrorno OUT
SELECT @retrorno

Saludos

Jorge Zapata

unread,
Jun 28, 2024, 5:06:39 PM (5 days ago) Jun 28
to Comunidad de Visual Foxpro en Español
Corre este Script y aplicalo a tu SP

CREATE PROCEDURE [dbo].[AñoActual]

 @anio INT,
 @nr INT OUTPUT
AS
BEGIN
    SELECT GETDATE()     WHERE YEAR(GETDATE()) = @anio;
    SELECT @nr = @@ROWCOUNT;
END;


-- Recuperamos el Valor de variable de retorno desde la ventana de consultas de SQL

DECLARE  @retorno INT
EXEC AñoActual 2024,@retorno OUT
SELECT @retorno


El lunes, 24 de junio de 2024 a las 23:30:55 UTC-5, integral escribió:

integral

unread,
Jun 30, 2024, 10:45:14 PM (2 days ago) Jun 30
to Comunidad de Visual Foxpro en Español

Que tal Amigos
Como puedo capturar un valor de retorno de un SP. Estoy trabajando con Visual Foxpro 9.0.

SQL SERVER 2019
*******************
DECLARE  @retorno INT
EXEC AñoActual ,@retorno OUT
SELECT @retorno AS TotalReg   <---- Capturar dicho Valor


VFP 9.0
********
Anio = 2024
Retorno = 0
=SQLEXEC(cn, "EXECUTE AñoActual ?Anio, ?Retorno", "Cursor_Total_Reg")


PROCESO_SP.jpg

Según la imagen adjunta, como puedo capturar la Cantidad total de registro de 211

Agradezco sus comentarios y sugerencias.

Saludos,

Integral
Message has been deleted

nkris...@gmail.com

unread,
Jul 1, 2024, 10:30:01 AM (2 days ago) Jul 1
to Comunidad de Visual Foxpro en Español
VFP 9.0
********
Anio = 2024
Retorno = 0
=SQLEXEC(cn, "EXECUTE AñoActual ?Anio, ?@Retorno", "Cursor_Total_Reg")

Prueba de esa manera.
Saludos.

integral

unread,
Jul 1, 2024, 11:03:10 AM (2 days ago) Jul 1
to Comunidad de Visual Foxpro en Español
Que tal amigo

Ya lo intente de esa manera y nada...
 
=SQLEXEC(cn, "EXECUTE AñoActual ?Anio, ?@Retorno", "Cursor_Total_Reg")

? Retorno

Retorno = 0

PROCESO_SP.jpg


Me trae desde el SQL Server 2019 el Cursor con la cantidad de Registros correcta.
TotalReg = 211  ???

Como capturo dicho valor desde VFP

Agradezco su ayuda.

Atte.,

Integral

Jorge Zapata

unread,
Jul 1, 2024, 9:48:50 PM (2 days ago) Jul 1
to Comunidad de Visual Foxpro en Español

Desde VFP,

Local  nRetorno
nRetorno=0
cSQL = [ EXEC  AñoActual ?Anio, ?@nRetorno ]

IF SQLEXEC(Connect_ID, (cSQL)) > 0
?nRetorno
ELSE
** manjo de error
        **ODBCErrorInfo('Imposible Generar consulta: '+cSQL, cSQL)
RETURN
ENDIF

integral

unread,
Jul 2, 2024, 11:10:11 AM (19 hours ago) Jul 2
to Comunidad de Visual Foxpro en Español
Que tal Amigo Jorge

Anoche hice el cambio sugerido desde VFP y nada.

Observo que no captura el valor de la cantidad de registros en SQLServer 2019

intente con un par de ejemplos que en encontré en google y tampoco funciono...

Seguiré intentando encontrar la solución.

Atte.,

Integral

Cristian Novoa

unread,
Jul 2, 2024, 3:52:39 PM (14 hours ago) Jul 2
to Comunidad de Visual Foxpro en Español
Debes agregar el caracter @.

=SQLEXEC(cn, "EXECUTE AñoActual ?Anio, ?@Retorno", "Cursor_Total_Reg")


Reply all
Reply to author
Forward
0 new messages