在存储过程中的IF子句上选择更多值

时间:2019-03-28 16:16:21

标签: sql sql-server tsql stored-procedures

在代码片段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的许可。

2 个答案:

答案 0 :(得分:0)

尝试以下

IF not exists (SELECT * 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

答案 1 :(得分:0)

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

它保持这样:

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