I use Sql Server 2014. I am having problems in Stored procedure, because when running with certain filters, I get this error:
Message 512, Level 16, State 1, Procedure SP_CMO_SEL_PORTARIA_INATIVOS, Line 485 Subquery returned more than 1 value. This is not permitted when the subquery follows =,! =, & Lt ;, < =, > & gt ;, > = or when the subquery is used as an expression.
By error, you can see that a subquery is returning more than one record and this can be a malformed Where and etc ...
As I do for when I run this proc, I can stop right in the error line. There it says line 485, but when going to line 485, it seems that everything is ok and can be higher up and came burst in this line a mistake that happened before, I do not know, I do not know if this is possible.
I did as my colleague Ismael advised and returned it to me:
Err #: 512 | Severity: 16 | Condition: 1 | Procedure: SP_CMO_SEL_PORTARIA_INATIVOS | Line: 389 | Error: Subquery returned more than 1 value. This is not permitted when the subquery follows =, ! =, & lt ;, < =, & gt ;, > = or when the subquery is used as an expression. Message 50000, Level 1, State 16
Only line 389 has nothing on it, it is blank and it is on BEGIN TRY
.
My Proc code block looks like this:
........
BEGIN TRY
IF @ID_XFC_GRP <> '' OR @ID_XFC_Inicial <> 0
BEGIN
SELECT #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_UNI_EMP,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.RAM_ATV,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.DT_LAU_PER,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_XFC,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.DT_NASC_XFC,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_MAE_XFC,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.IR_SEX_XFC,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SUS_XFC,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_RG_XFC,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_CPF_XFC,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.DS_END,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_CID_END,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.SG_UF_END,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_FUN_ULT,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_SET_ULT,
#T_SP_CMO_SEL_REL_FICHA_ADMISSAO.ID_XFC,
#T_SP_CMO_SEL_REL_FICHA_ADMISSAO.ID_PER_CPC_XFC,
#T_SP_CMO_SEL_REL_FICHA_ADMISSAO.DT_ADM_PER_CPC_XFC,
#T_SP_CMO_SEL_REL_FICHA_ADMISSAO.DT_DMS_PER_CPC_XFC,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_PER_FUN_XFC,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_XFC,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_EMP,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_UNI_EMP,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_SET_UNI,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.NM_SET_UNI,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.NM_FUN,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.DT_INI_PER_FUN_XFC,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.DT_FNL_PER_FUN_XFC,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.DS_MAT_CTO,
isNull( OIT1980LEITURA.DT_RX, EXAME_RAIOX.DT_EXM_REA ) DT_RX,
OIT1980LEITURA.RX_NUM,
EXAME_RAIOX.DS_OBS_EXM_REA AS DS_RAIOX,
ESPIROMETRIA.CVF_PRE,
ESPIROMETRIA.CVF_MED,
Replace(Cast(ESPIROMETRIA.CVF_POR as varchar(7)), '.', ',') as CVF_POR,
ESPIROMETRIA.CVF_LMT,
ESPIROMETRIA.VEF_PRE,
ESPIROMETRIA.VEF_MED,
Replace(Cast(ESPIROMETRIA.VEF_POR as varchar(7)), '.', ',') as VEF_POR,
ESPIROMETRIA.VEF_LMT,
ESPIROMETRIA.VEF_CVF_PRE,
ESPIROMETRIA.VEF_CVF_MED,
ESPIROMETRIA.VEF_CVF_POR,
ESPIROMETRIA.VEF_CVF_LMT,
ESPIROMETRIA.FEF_PRE,
ESPIROMETRIA.FEF_MED,
Replace(Cast(ESPIROMETRIA.FEF_POR as varchar(7)),'.', ',') as FEF_POR,
ESPIROMETRIA.FEF_LMT,
EXAME.DS_OBS_EXM_REA AS DS_ESPIROMETRIA,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.DS_DTLH_CLSS,
CIDADE_UNIDADE.NM_CID_END AS CIDADE
, EXAME.DT_EXM_REA DT_EXA_EXP
, NM_EMP,
( Select NO_TEL_UNI_EMP From t_cmo_unidade
Where ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP ) Telefone,
( Select DS_END From t_cmo_endereco
Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP ) Endereco,
( Select NM_BRR_END From t_cmo_endereco
Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP ) Bairro,
( Select CD_CEP From t_cmo_endereco
Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP ) CEP,
( Select NM_CID_END From t_cmo_endereco
Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP ) Cidade,
( Select SG_UF_END From t_cmo_endereco
Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP ) UF
FROM #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO
LEFT OUTER JOIN #T_SP_CMO_SEL_REL_FICHA_ADMISSAO
ON #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC = #T_SP_CMO_SEL_REL_FICHA_ADMISSAO.ID_XFC
LEFT OUTER JOIN #T_SP_CMO_SEL_REL_FICHA_FUNCAO
ON #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC = #T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_XFC
LEFT OUTER JOIN T_CMO_OIT1980_LEITURA OIT1980LEITURA
ON OIT1980LEITURA.ID_OIT_LET = 1
AND OIT1980LEITURA.ID_OIT = (SELECT ID_OIT FROM T_CMO_OIT1980
WHERE ID_EXM_REA = (SELECT MAX(ID_EXM_REA) FROM T_CMO_EXAME_REALIZADO
WHERE ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
AND ID_EXM = 3936
AND NO_SEQ_AVA_LAU_PER = ISNULL(#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER, 0)--NO_SEQ_AVA_LAU_PER, para filtro por avaliação
)
)
LEFT OUTER JOIN T_CMO_EXAME_REALIZADO AS EXAME_RAIOX
ON EXAME_RAIOX.NO_SEQ_AVA_LAU_PER = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER
AND EXAME_RAIOX.ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
AND EXAME_RAIOX.ID_EXM_REA = (SELECT MAX(ID_EXM_REA) FROM T_CMO_EXAME_REALIZADO
WHERE ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
AND ID_EXM = 3936
AND NO_SEQ_AVA_LAU_PER = ISNULL(#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER, 0)--NO_SEQ_AVA_LAU_PER, para filtro por avaliação
)
LEFT OUTER JOIN T_CMO_ESPIROMETRIA ESPIROMETRIA
ON ESPIROMETRIA.ID_EXP = (SELECT ID_EXP FROM T_CMO_ESPIROMETRIA
WHERE ID_EXM_REA = (SELECT MAX(ID_EXM_REA) FROM T_CMO_EXAME_REALIZADO
WHERE ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
AND (ID_EXM = 1514 OR ID_EXM = 3136)
AND NO_SEQ_AVA_LAU_PER = ISNULL(#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER, 0) --NO_SEQ_AVA_LAU_PER, para filtro por avaliação
)
)
--PARA PEGAR A OBS DA ESPIROMETRIA
LEFT OUTER JOIN T_CMO_EXAME_REALIZADO AS EXAME
ON EXAME.NO_SEQ_AVA_LAU_PER = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER
AND EXAME.ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
AND EXAME.ID_EXM_REA = (SELECT MAX(ID_EXM_REA) FROM T_CMO_EXAME_REALIZADO
WHERE ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
AND (ID_EXM = 1514 OR ID_EXM = 3136)
AND NO_SEQ_AVA_LAU_PER = ISNULL(#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER, 0) --NO_SEQ_AVA_LAU_PER, para filtro por avaliação
)
left outer join T_CMO_ENDERECO AS CIDADE_UNIDADE
ON CIDADE_UNIDADE.id_emp = @ID_EMP
and CIDADE_UNIDADE.id_uni_emp = @ID_UNI_EMP
and CIDADE_UNIDADE.IR_TIP_END = 'U'
WHERE #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP = @ID_EMP
AND #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP = @ID_UNI_EMP
AND #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC in(SELECT ID_XFC FROM #FUNCIONARIOS_INATIVOS)
--AND YEAR(EXAME.DT_EXM_REA) BETWEEN @DT_DE_LAUDO AND @DT_ATE_LAUDO
ORDER BY #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC,
#T_SP_CMO_SEL_REL_FICHA_ADMISSAO.DT_ADM_PER_CPC_XFC,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.DT_INI_PER_FUN_XFC
END
ELSE
BEGIN
SELECT #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_UNI_EMP,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.RAM_ATV,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.DT_LAU_PER,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_XFC,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.DT_NASC_XFC,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_MAE_XFC,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.IR_SEX_XFC,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SUS_XFC,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_RG_XFC,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_CPF_XFC,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.DS_END,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_CID_END,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.SG_UF_END,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_FUN_ULT,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_SET_ULT,
#T_SP_CMO_SEL_REL_FICHA_ADMISSAO.ID_XFC,
#T_SP_CMO_SEL_REL_FICHA_ADMISSAO.ID_PER_CPC_XFC,
#T_SP_CMO_SEL_REL_FICHA_ADMISSAO.DT_ADM_PER_CPC_XFC,
#T_SP_CMO_SEL_REL_FICHA_ADMISSAO.DT_DMS_PER_CPC_XFC,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_PER_FUN_XFC,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_XFC,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_EMP,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_UNI_EMP,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_SET_UNI,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.NM_SET_UNI,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.NM_FUN,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.DT_INI_PER_FUN_XFC,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.DT_FNL_PER_FUN_XFC,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.DS_MAT_CTO,
OIT1980LEITURA.DT_RX,
OIT1980LEITURA.RX_NUM,
EXAME_RAIOX.DS_OBS_EXM_REA AS DS_RAIOX,
ESPIROMETRIA.CVF_PRE,
ESPIROMETRIA.CVF_MED,
Replace(Cast(ESPIROMETRIA.CVF_POR as varchar(7)), '.', ',') as CVF_POR,
ESPIROMETRIA.CVF_LMT,
ESPIROMETRIA.VEF_PRE,
ESPIROMETRIA.VEF_MED,
Replace(Cast(ESPIROMETRIA.VEF_POR as varchar(7)), '.', ',') as VEF_POR,
ESPIROMETRIA.VEF_LMT,
ESPIROMETRIA.VEF_CVF_PRE,
ESPIROMETRIA.VEF_CVF_MED,
ESPIROMETRIA.VEF_CVF_POR,
ESPIROMETRIA.VEF_CVF_LMT,
ESPIROMETRIA.FEF_PRE,
ESPIROMETRIA.FEF_MED,
Replace(Cast(ESPIROMETRIA.FEF_POR as varchar(7)),'.', ',') as FEF_POR,
ESPIROMETRIA.FEF_LMT,
EXAME.DS_OBS_EXM_REA AS DS_ESPIROMETRIA,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.DS_DTLH_CLSS,
CIDADE_UNIDADE.NM_CID_END AS CIDADE
, EXAME.DT_EXM_REA DT_EXA_EXP
, NM_EMP,
( Select NO_TEL_UNI_EMP From t_cmo_unidade
Where ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP ) Telefone,
( Select DS_END From t_cmo_endereco
Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP ) Endereco,
( Select NM_BRR_END From t_cmo_endereco
Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP ) Bairro,
( Select CD_CEP From t_cmo_endereco
Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP ) CEP,
( Select NM_CID_END From t_cmo_endereco
Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP ) Cidade,
( Select SG_UF_END From t_cmo_endereco
Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP ) UF
FROM #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO
LEFT OUTER JOIN #T_SP_CMO_SEL_REL_FICHA_ADMISSAO
ON #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC = #T_SP_CMO_SEL_REL_FICHA_ADMISSAO.ID_XFC
LEFT OUTER JOIN #T_SP_CMO_SEL_REL_FICHA_FUNCAO
ON #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC = #T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_XFC
LEFT OUTER JOIN T_CMO_OIT1980_LEITURA OIT1980LEITURA
ON OIT1980LEITURA.ID_OIT_LET = 1
AND OIT1980LEITURA.ID_OIT = (SELECT ID_OIT FROM T_CMO_OIT1980
WHERE ID_EXM_REA = (SELECT MAX(ID_EXM_REA) FROM T_CMO_EXAME_REALIZADO
WHERE ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
AND ID_EXM = 3936
AND NO_SEQ_AVA_LAU_PER = ISNULL(#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER, 0)--NO_SEQ_AVA_LAU_PER, para filtro por avaliação
)
)
LEFT OUTER JOIN T_CMO_EXAME_REALIZADO AS EXAME_RAIOX
ON EXAME_RAIOX.NO_SEQ_AVA_LAU_PER = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER
AND EXAME_RAIOX.ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
AND EXAME_RAIOX.ID_EXM_REA = (SELECT MAX(ID_EXM_REA) FROM T_CMO_EXAME_REALIZADO
WHERE ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
AND ID_EXM = 3936
AND NO_SEQ_AVA_LAU_PER = ISNULL(#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER, 0)--NO_SEQ_AVA_LAU_PER, para filtro por avaliação
)
LEFT OUTER JOIN T_CMO_ESPIROMETRIA ESPIROMETRIA
ON ESPIROMETRIA.ID_EXP = (SELECT ID_EXP FROM T_CMO_ESPIROMETRIA
WHERE ID_EXM_REA = (SELECT MAX(ID_EXM_REA) FROM T_CMO_EXAME_REALIZADO
WHERE ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
AND (ID_EXM = 1514 OR ID_EXM = 3136)
AND NO_SEQ_AVA_LAU_PER = ISNULL(#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER, 0) --NO_SEQ_AVA_LAU_PER, para filtro por avaliação
)
)
--PARA PEGAR A OBS DA ESPIROMETRIA
LEFT OUTER JOIN T_CMO_EXAME_REALIZADO AS EXAME
ON EXAME.NO_SEQ_AVA_LAU_PER = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER
AND EXAME.ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
AND EXAME.ID_EXM_REA = (SELECT MAX(ID_EXM_REA) FROM T_CMO_EXAME_REALIZADO
WHERE ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
AND (ID_EXM = 1514 OR ID_EXM = 3136)
AND NO_SEQ_AVA_LAU_PER = ISNULL(#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER, 0) --NO_SEQ_AVA_LAU_PER, para filtro por avaliação
)
left outer join T_CMO_ENDERECO AS CIDADE_UNIDADE
ON CIDADE_UNIDADE.id_emp = @ID_EMP
and CIDADE_UNIDADE.id_uni_emp = @ID_UNI_EMP
and CIDADE_UNIDADE.IR_TIP_END = 'U'
WHERE #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP = @ID_EMP
AND #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP = @ID_UNI_EMP
AND #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC IN (SELECT ID_XFC FROM #FUNCIONARIOS_INATIVOS)
--AND EXISTS(SELECT ID_XFC FROM #T_SP_CMO_SEL_REL_FICHA_ADMISSAO
--WHERE #T_SP_CMO_SEL_REL_FICHA_ADMISSAO.DT_ADM_PER_CPC_XFC < @DT_ADM
--AND #T_SP_CMO_SEL_REL_FICHA_ADMISSAO.ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
--)
--AND YEAR(EXAME.DT_EXM_REA) BETWEEN @DT_DE_LAUDO AND @DT_ATE_LAUDO
ORDER BY #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC,
#T_SP_CMO_SEL_REL_FICHA_ADMISSAO.DT_ADM_PER_CPC_XFC,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.DT_INI_PER_FUN_XFC
END
END TRY
BEGIN CATCH
DECLARE @_ERROR_PROCEDURE VARCHAR(MAX)
SET @_ERROR_PROCEDURE = 'Err Nº: ' + CAST(ERROR_NUMBER() AS VARCHAR(10)) +
' | Severidade: '+ CAST(ERROR_SEVERITY() AS VARCHAR(10)) +
' | Estado: ' + CAST(ERROR_STATE() AS VARCHAR(10)) +
' | Procedure: '+ ISNULL(ERROR_PROCEDURE(),'') +
' | Linha: '+ CAST(ERROR_LINE() AS VARCHAR(10)) +
' | Erro: '+ ERROR_MESSAGE()
RAISERROR(@_ERROR_PROCEDURE,1,16)
END CATCH
........
I've set a variable of type int
like this:
declare
@Contador int = 0
IF @ID_XFC_GRP <> '' OR @ID_XFC_Inicial <> 0
BEGIN
set @Contador = 8
SELECT #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_UNI_EMP,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.RAM_ATV,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.DT_LAU_PER,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_XFC,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.DT_NASC_XFC,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_MAE_XFC,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.IR_SEX_XFC,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SUS_XFC,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_RG_XFC,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_CPF_XFC,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.DS_END,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_CID_END,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.SG_UF_END,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_FUN_ULT,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NM_SET_ULT,
#T_SP_CMO_SEL_REL_FICHA_ADMISSAO.ID_XFC,
#T_SP_CMO_SEL_REL_FICHA_ADMISSAO.ID_PER_CPC_XFC,
#T_SP_CMO_SEL_REL_FICHA_ADMISSAO.DT_ADM_PER_CPC_XFC,
#T_SP_CMO_SEL_REL_FICHA_ADMISSAO.DT_DMS_PER_CPC_XFC,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_PER_FUN_XFC,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_XFC,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_EMP,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_UNI_EMP,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_SET_UNI,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.NM_SET_UNI,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.NM_FUN,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.DT_INI_PER_FUN_XFC,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.DT_FNL_PER_FUN_XFC,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.DS_MAT_CTO,
isNull( OIT1980LEITURA.DT_RX, EXAME_RAIOX.DT_EXM_REA ) DT_RX,
OIT1980LEITURA.RX_NUM,
EXAME_RAIOX.DS_OBS_EXM_REA AS DS_RAIOX,
ESPIROMETRIA.CVF_PRE,
ESPIROMETRIA.CVF_MED,
Replace(Cast(ESPIROMETRIA.CVF_POR as varchar(7)), '.', ',') as CVF_POR,
ESPIROMETRIA.CVF_LMT,
ESPIROMETRIA.VEF_PRE,
ESPIROMETRIA.VEF_MED,
Replace(Cast(ESPIROMETRIA.VEF_POR as varchar(7)), '.', ',') as VEF_POR,
ESPIROMETRIA.VEF_LMT,
ESPIROMETRIA.VEF_CVF_PRE,
ESPIROMETRIA.VEF_CVF_MED,
ESPIROMETRIA.VEF_CVF_POR,
ESPIROMETRIA.VEF_CVF_LMT,
ESPIROMETRIA.FEF_PRE,
ESPIROMETRIA.FEF_MED,
Replace(Cast(ESPIROMETRIA.FEF_POR as varchar(7)),'.', ',') as FEF_POR,
ESPIROMETRIA.FEF_LMT,
EXAME.DS_OBS_EXM_REA AS DS_ESPIROMETRIA,
#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.DS_DTLH_CLSS,
CIDADE_UNIDADE.NM_CID_END AS CIDADE
, EXAME.DT_EXM_REA DT_EXA_EXP
, NM_EMP,
( Select NO_TEL_UNI_EMP From t_cmo_unidade
Where ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP ) Telefone,
( Select DS_END From t_cmo_endereco
Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP ) Endereco,
( Select NM_BRR_END From t_cmo_endereco
Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP ) Bairro,
( Select CD_CEP From t_cmo_endereco
Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP ) CEP,
( Select NM_CID_END From t_cmo_endereco
Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP ) Cidade,
( Select SG_UF_END From t_cmo_endereco
Where IR_TIP_END = 'U' and ID_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP and ID_UNI_EMP = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP ) UF
FROM #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO
LEFT OUTER JOIN #T_SP_CMO_SEL_REL_FICHA_ADMISSAO
ON #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC = #T_SP_CMO_SEL_REL_FICHA_ADMISSAO.ID_XFC
LEFT OUTER JOIN #T_SP_CMO_SEL_REL_FICHA_FUNCAO
ON #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC = #T_SP_CMO_SEL_REL_FICHA_FUNCAO.ID_XFC
LEFT OUTER JOIN T_CMO_OIT1980_LEITURA OIT1980LEITURA
ON OIT1980LEITURA.ID_OIT_LET = 1
AND OIT1980LEITURA.ID_OIT = (SELECT ID_OIT FROM T_CMO_OIT1980
WHERE ID_EXM_REA = (SELECT MAX(ID_EXM_REA) FROM T_CMO_EXAME_REALIZADO
WHERE ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
AND ID_EXM = 3936
AND NO_SEQ_AVA_LAU_PER = ISNULL(#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER, 0)--NO_SEQ_AVA_LAU_PER, para filtro por avaliação
)
)
LEFT OUTER JOIN T_CMO_EXAME_REALIZADO AS EXAME_RAIOX
ON EXAME_RAIOX.NO_SEQ_AVA_LAU_PER = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER
AND EXAME_RAIOX.ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
AND EXAME_RAIOX.ID_EXM_REA = (SELECT MAX(ID_EXM_REA) FROM T_CMO_EXAME_REALIZADO
WHERE ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
AND ID_EXM = 3936
AND NO_SEQ_AVA_LAU_PER = ISNULL(#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER, 0)--NO_SEQ_AVA_LAU_PER, para filtro por avaliação
)
LEFT OUTER JOIN T_CMO_ESPIROMETRIA ESPIROMETRIA
ON ESPIROMETRIA.ID_EXP = (SELECT ID_EXP FROM T_CMO_ESPIROMETRIA
WHERE ID_EXM_REA = (SELECT MAX(ID_EXM_REA) FROM T_CMO_EXAME_REALIZADO
WHERE ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
AND (ID_EXM = 1514 OR ID_EXM = 3136)
AND NO_SEQ_AVA_LAU_PER = ISNULL(#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER, 0) --NO_SEQ_AVA_LAU_PER, para filtro por avaliação
)
)
--PARA PEGAR A OBS DA ESPIROMETRIA
LEFT OUTER JOIN T_CMO_EXAME_REALIZADO AS EXAME
ON EXAME.NO_SEQ_AVA_LAU_PER = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER
AND EXAME.ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
AND EXAME.ID_EXM_REA = (SELECT MAX(ID_EXM_REA) FROM T_CMO_EXAME_REALIZADO
WHERE ID_XFC = #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC
AND (ID_EXM = 1514 OR ID_EXM = 3136)
AND NO_SEQ_AVA_LAU_PER = ISNULL(#T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.NO_SEQ_AVA_LAU_PER, 0) --NO_SEQ_AVA_LAU_PER, para filtro por avaliação
)
left outer join T_CMO_ENDERECO AS CIDADE_UNIDADE
ON CIDADE_UNIDADE.id_emp = @ID_EMP
and CIDADE_UNIDADE.id_uni_emp = @ID_UNI_EMP
and CIDADE_UNIDADE.IR_TIP_END = 'U'
WHERE #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_EMP = @ID_EMP
AND #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_UNI_EMP = @ID_UNI_EMP
AND #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC in(SELECT ID_XFC FROM #FUNCIONARIOS_INATIVOS)
--AND YEAR(EXAME.DT_EXM_REA) BETWEEN @DT_DE_LAUDO AND @DT_ATE_LAUDO
ORDER BY #T_SP_CMO_SEL_PORTARIA_FUNCIONARIO.ID_XFC,
#T_SP_CMO_SEL_REL_FICHA_ADMISSAO.DT_ADM_PER_CPC_XFC,
#T_SP_CMO_SEL_REL_FICHA_FUNCAO.DT_INI_PER_FUN_XFC
END
ELSE
BEGIN
set @Contador = 9
In catch I did this:
BEGIN CATCH
DECLARE @_ERROR_PROCEDURE VARCHAR(MAX)
SET @_ERROR_PROCEDURE = 'Err Nº: ' + CAST(ERROR_NUMBER() AS VARCHAR(10)) +
' | Severidade: '+ CAST(ERROR_SEVERITY() AS VARCHAR(10)) +
' | Estado: ' + CAST(ERROR_STATE() AS VARCHAR(10)) +
' | Procedure: '+ ISNULL(ERROR_PROCEDURE(),'') +
' | Linha: '+ CAST(ERROR_LINE() AS VARCHAR(10)) +
' | Erro: '+ ERROR_MESSAGE() +
' | Contador: ' + CAST(@Contador AS VARCHAR(10))
RAISERROR(@_ERROR_PROCEDURE,1,16)
END CATCH
The value printed for Counter was 8, so I think the problem is in the select below it.