sql - 在存储过程中的子句 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 的许可。
解决方案
谢谢大家的帮助,我找到了解决我遇到的问题的方法。
它保持这样:
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
推荐阅读
- amazon-web-services - 为什么 Kinesis Video Streams 中的某些片段中的“FragmentLengthInMilliseconds”为零
- sql - 确定给定查询要创建什么索引?
- c++ - 使用未初始化的内存 c++ box2D
- github - Github Dismiss Stale 批准和 rebase
- java - 带有if条件的双重for循环
- python - 对 Pandas 数据框的所有元素应用 if/then 条件
- arrays - 为什么使用 reqwest 下载的 PNG 图像的字节数与使用 Python 下载的字节数不同?
- javascript - .find() 函数在 .create() 之前运行,即使它在 JS 代码中位于 .create() 函数之下
- ssh - ssh 命令无限期挂起
- python - Python - 将多个 2D 数组连接成一个 3D 数组