首页 > 解决方案 > 在存储过程中的子句 IF 上选择更多值

问题描述

当在代码片段 37 或 35 上的 IF 中选择更多值时,我的存储过程中存在语法问题。

IF 37 OR 35 NOT IN (SELECT CodPerfilSistema 
                    FROM [BRSAODB09].[ADMIN].[dbo].[PERFIL_USUARIO] 
                    WHERE CodUsuario = @pCodUsuario)
BEGIN
    SET @CondicaoEmpresa = ' AND [Lote].CodEmpresa = ' +  CONVERT(varchar(10), @pCodEmpresa);
    SET @CondicaoProjeto = ' AND [AUD_Projeto].CodProjeto = ' +  CONVERT(varchar(10), @pCodProjeto);
END

我试过上面的代码。

下面是代码的运行方式

 IF 37 NOT IN (SELECT CodPerfilSistema 
               FROM [BRSAODB09].[ADMIN].[dbo].[PERFIL_USUARIO] 
               WHERE CodUsuario = @pCodUsuario)
BEGIN
    SET @CondicaoEmpresa = ' AND [Lote].CodEmpresa = ' +  CONVERT(varchar(10), @pCodEmpresa);
    SET @CondicaoProjeto = ' AND [AUD_Projeto].CodProjeto = ' +  CONVERT(varchar(10), @pCodProjeto);
END

我需要 ID 37 和 35 的许可。

标签: sqlsql-servertsqlstored-procedures

解决方案


谢谢大家的帮助,我找到了解决我遇到的问题的方法。

它保持这样:

IF NOT EXISTS(
SELECT 1 
FROM [BRSAODB09].[ADMIN].[dbo].[PERFIL_USUARIO] 
WHERE CodUsuario = @pCodUsuario
AND  CodPerfilSistema IN(37,35)
)
BEGIN
     SET @CondicaoEmpresa = ' AND [Lote].CodEmpresa = ' +  CONVERT(varchar(10), 
     @pCodEmpresa);

     SET @CondicaoProjeto = ' AND [AUD_Projeto].CodProjeto = ' +  CONVERT(varchar(10), 
     @pCodProjeto);
END 

推荐阅读