Power Builder - PB2022 - NO GRABA en STORED PROCEDURE PARAMETRIZADO de SQL SERVER

 
Vista:
sin imagen de perfil

PB2022 - NO GRABA en STORED PROCEDURE PARAMETRIZADO de SQL SERVER

Publicado por Alex (2 intervenciones) el 28/03/2024 23:10:49
-Intento grabar por medio de un SP, sin éxito, en una tabla de Sql Server.

-Al ejecutarlo no da error, pero nada hace, como si no existiera la línea EXECUTE.

-También probé anular en el SP todo lo que es controles de transacción dejando
solo el INSERT INTO, y tampoco hace nada.

-El SP funciona y graba bien. Ya está probado en el sql.

-El messagebox del CnxSqlSrv.sqlcode devuelve el valor -1

-El messagebox de la variable nRet muestra el valor -999, lo que me indica que
nunca fue modificado dentro del SP, algo que es imposible, por lo tanto nunca
entrá al SP, y eso significa que para el PB no existe el EXECUTE.

¿Qué estoy haciendo mal?. ya dudo de si es confiable el PB, pues lo estoy
aprendiendo y evaluando. Espero que me ayuden y el problema sea yo que hace
mal las cosas, porque el PB me gusta mucho y sería una pena descartarlo.
Espero sus comentarios. Gracias.

-------------
Versiones
-------------
-POWERBUILDER 2022 1878
-SQL SERVER 2014

--------------
Elementos
--------------
-parent.em_fecha.text = "2024"
-CnxSqlSrv = conexión a sql funcionando
-TEST2 = Tabla en sql server
-PROCEDURE dbo.TEST= stored procedure grabando perfectamente

----------------------------
En SP de Sql Server
----------------------------
PROCEDURE dbo.TEST @panio int, @presultado int OUTPUT
AS
BEGIN
SET NOCOUNT ON;

BEGIN TRANSACTION TR
Begin Try
if @panio>0
begin
INSERT INTO TEST2(anio) values(@panio);
end
End Try
Begin Catch
goto no_actualiza
End Catch

COMMIT TRANSACTION TR
set @presultado = 0;
return;

no_actualiza:
ROLLBACK TRANSACTION TR
set @presultado = 99
return;
END
GO

------------------------------
En Powerbuilder 2022
------------------------------
integer nAnio
integer nRet

nAnio = year(date(parent.em_fecha.text))
nRet = -999

DECLARE pbsp_CL PROCEDURE FOR dbo.TEST
@nAnio = :nAnio,
@nRet = :nRet USING (CnxSqlSrv);

EXECUTE pbsp_CL;

if CnxSqlSrv.sqlcode = 0 then
messagebox("Grabación exitosa SQLCODE.","EJECUTÓ "+string(CnxSqlSrv.sqlcode))
else
messagebox("Grabación error SQLCODE.","ERROR "+string(CnxSqlSrv.sqlcode)+"-"+SQLCA.sqlerrtext)
end if

if nRet<>1 then
messagebox("Error nRet OUT ",string(nRet))
else
messagebox("OK nRet OUT ",string(nRet))
end if

CLOSE pbsp_CL;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Leonardo Daniel A.
Val: 821
Oro
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

PB2022 - NO GRABA en STORED PROCEDURE PARAMETRIZADO de SQL SERVER

Publicado por Leonardo Daniel A. (481 intervenciones) el 12/04/2024 23:07:21
y porque con SP, los SPs son para realizar procesos pesados, no para hacer CRUD, eso te lo hace solo el DataWindow
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar