Reputation: 126
I have the following SQL Server stored procedure:
USE [Forsa]
GO
/****** Object: StoredProcedure [dbo].[USP_fup_UPD_hvp_Observaciones] Script Date: 20/10/2022 23:34:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[USP_fup_UPD_hvp_Observaciones]
(@pFupID int,
@pVersion varchar(2),
@pTipoEntrada int,
@pUsuario varchar(50),
@pEstado varchar(50),
@pCons int,
@pPadre int,
@pTitulo Varchar(50),
@pComentario varchar(max) = '',
@pFecDespacho Date = NULL,
@pFecEntrega Date = NULL,
@pTipoConsideracionObservacion int = 0,
@pAreaSolicitada varchar (50) = '',
@pSolucionadoEnObra int =0 ,
@pGeneroCosto int = 0,
@pDebugVar int = 0)
AS
BEGIN
SET NOCOUNT ON
BEGIN TRY
BEGIN TRAN
IF @pCons = -1
BEGIN
SELECT @pCons = ISNULL(MAX(eecc_consecutivo), 0) + 1
FROM fup_enc_ent_ControlCambios cc
INNER JOIN fup_enc_entrada_cotizacion ec ON CC.eecc_enc_entrada_cot_id = EC.eect_id
WHERE ec.eect_fup_id = @pFupID
AND ec.eect_vercot_id = @pVersion
END
MERGE fup_hvp_Observaciones AS cc
USING (SELECT DISTINCT
ece.eect_id, @pUsuario usu,
CASE WHEN LEN(@pEstado) > 2 THEN @pEstado ELSE ep.[ep_desc_estado] END estado, @pTitulo Titulo,
@pComentario comentario, @pCons Consecutivo, @pPadre Padre, Getdate() Fecha,
@pTipoEntrada TipoEntrada, @pFecDespacho FecDespacho, @pFecEntrega FecEntrega,
@pTipoConsideracionObservacion TipoConsideracionObservacion,
@pAreaSolicitada AreaSolicitada, @pSolucionadoEnObra SolucionadoEnObra,
@pGeneroCosto GeneroCosto
FROM
fup_enc_entrada_cotizacion ece
LEFT OUTER JOIN
fup_acta_seguimiento ac ON ac.actseg_fup_id = ece.eect_fup_id
AND ac.actseg_version = ece.eect_vercot_id
LEFT OUTER JOIN
fup_estado_proceso ep ON ece.eect_estado_proc = ep.ep_id
WHERE
ece.eect_fup_id = @pFupID
AND ece.eect_vercot_id = @pVersion) AS s
ON (cc.hvpo_enc_entrada_cot_id = s.eect_id AND cc.hvpo_consecutivo = s.Consecutivo )
WHEN NOT MATCHED THEN INSERT
([hvpo_enc_entrada_cot_id] ,[hvpo_consecutivo] ,[hvpo_Padre] ,[hvpo_EstadoFup]
,[hvpo_Titulo] ,[hvpo_Comentario] ,[hvpo_UsuaActualiza] ,[hvpo_FecActualiza]
,[hvpo_FecDespacho] ,[hvpo_FecEntrega] ,[hvpo_TipoEntrada]
,[hvpo_TipoConsideracionObservacion] ,[hvpo_AreaSolicitada]
,[hvpo_SolucionadoEnObra] ,[hvpo_GeneroCosto])
VALUES
(s.eect_id, s.Consecutivo, s.Padre, s.estado, s.Titulo, s.comentario, s.usu, Fecha,
s.FecDespacho, s.FecEntrega, s.TipoEntrada, s.TipoConsideracionObservacion,
s.AreaSolicitada, s.SolucionadoEnObra ,s.GeneroCosto);
COMMIT;
END TRY
BEGIN CATCH
ROLLBACK;
INSERT INTO errores
SELECT
GETDATE()
,ERROR_NUMBER() AS ErrorNumber
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage
END CATCH;
END
Ok, what I want to do and don't how, it's in the line of ON (cc.hvpo_enc_entrada_cot_id = s.eect_id AND cc.hvpo_consecutivo = s.Consecutivo )
I tried placing a PRINT
and RETURN
statement just after the WHEN NOT MATCHED statement and the code throws a syntax error. I just want to know the values of that variables when the stored procedure takes place
Upvotes: 0
Views: 74
Reputation: 7753
First of all you can't put PRINT statements in the middle of another statement (the Merge), you can however specify an OUTPUT Clause:
MERGE fup_hvp_Observaciones AS cc
USING (SELECT DISTINCT
ece.eect_id, @pUsuario usu,
CASE WHEN LEN(@pEstado) > 2 THEN @pEstado ELSE ep.[ep_desc_estado] END estado, @pTitulo Titulo,
@pComentario comentario, @pCons Consecutivo, @pPadre Padre, Getdate() Fecha,
@pTipoEntrada TipoEntrada, @pFecDespacho FecDespacho, @pFecEntrega FecEntrega,
@pTipoConsideracionObservacion TipoConsideracionObservacion,
@pAreaSolicitada AreaSolicitada, @pSolucionadoEnObra SolucionadoEnObra,
@pGeneroCosto GeneroCosto
FROM
fup_enc_entrada_cotizacion ece
LEFT OUTER JOIN
fup_acta_seguimiento ac ON ac.actseg_fup_id = ece.eect_fup_id
AND ac.actseg_version = ece.eect_vercot_id
LEFT OUTER JOIN
fup_estado_proceso ep ON ece.eect_estado_proc = ep.ep_id
WHERE
ece.eect_fup_id = @pFupID
AND ece.eect_vercot_id = @pVersion) AS s
ON (cc.hvpo_enc_entrada_cot_id = s.eect_id AND cc.hvpo_consecutivo = s.Consecutivo )
WHEN NOT MATCHED THEN INSERT
([hvpo_enc_entrada_cot_id] ,[hvpo_consecutivo] ,[hvpo_Padre] ,[hvpo_EstadoFup]
,[hvpo_Titulo] ,[hvpo_Comentario] ,[hvpo_UsuaActualiza] ,[hvpo_FecActualiza]
,[hvpo_FecDespacho] ,[hvpo_FecEntrega] ,[hvpo_TipoEntrada]
,[hvpo_TipoConsideracionObservacion] ,[hvpo_AreaSolicitada]
,[hvpo_SolucionadoEnObra] ,[hvpo_GeneroCosto])
VALUES
(s.eect_id, s.Consecutivo, s.Padre, s.estado, s.Titulo, s.comentario, s.usu, Fecha,
s.FecDespacho, s.FecEntrega, s.TipoEntrada, s.TipoConsideracionObservacion,
s.AreaSolicitada, s.SolucionadoEnObra ,s.GeneroCosto)
OUTPUT
$action,
deleted.*,
inserted.*;
The $action will be one of 'INSERT', 'UPDATE' or 'DELETE
Upvotes: 1