2
I use Sql Server 2014. I am having problems with Stored Procedure, because when running with certain filters, it triggers this error:
Message 512, Level 16, Status 1, Procedure SP_CMO_SEL_PORTARIA_INATIVOS, Line 485 Subquery returned more than 1 value. This is not permitted when the subquery Follows =, != , <, <= ,> , >= or when the subquery is used as an Expression.
By the error, you can see that a subquery is returning more than one record and this can be a poorly formed Where etc...
As I do for when I run this proc, I can stop at exactly the line of error. There it says line 485, but when going to the line 485, it seems that everything is ok and it can be more up and came to burst in this line a mistake that happened before, I don’t know, I don’t know if this is possible.
I did as the colleague Ismael directed and returned me this:
Err Nº: 512 | Severity: 16 | Status: 1 | Procedure: SP_CMO_SEL_PORTARIA_INATIVOS | Line 389 | Error: Subquery returned more than 1 value. This is not permitted when the subquery Follows =, != , <, <= , >, >= or when the subquery is used as an Expression. Message 50000, Level 1, State 16
Only the line 389 has nothing on it, it’s blank and it’s on top of the BEGIN TRY
.
My Proc code pad is 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 set a type variable int
thus:
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
No catch I did that:
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 printed value for Counter was 8, so I think the problem is in select below it.
Can you place part of your proc? Recreate the Procedure in a new query. Only the Procedure, so that the first line in the IDE is the
create proc
.– Ismael
I put the code for Proc’s return in the post.
– pnet
You have to post the code from the beginning, because from there we will count the lines.
– Ismael
I’ve been debugging javascript with
Alert()
. I created a variable of type int and set the variable in each block. The last impression I caught on the catch, was 8, that means that the error happened soon after, otherwise it would have printed 9 and not 8.– pnet
@pnet I updated the response with a command that will help you.
– Ismael
@pnet All the subselects which are used as a column or in
where
where the syntax is field = subconsultation (provided that it does not use any aggregation function like sum, max etc) could be secured with aTOP 1
.– Ismael
I get it. The Indsert I gave in the bank, is that it broke everything, but I will consider, only that I can not change much this proc. I’m not who I made it and I can understand the business here.
– pnet