首页 > 解决方案 > 存在失败进入存储过程

问题描述

此代码工作:

declare @IDArticulo int = 12
declare @DescripcionArticuloVEL varchar(150) = (select top 1 DescripcionArticulo 
from TabVentasEnLineaDetalle where IDArticulo=@IDArticulo and exists (select DescripcionArticulo 
from TabVentasEnLineaDetalle where IDArticulo=@IDArticulo))
print @DescripcionArticuloVEL

但是,进入存储过程返回此错误:

消息 116,级别 16,状态 1,过程 SPMaestroArticulos,第 43 行
当子查询未使用 EXISTS 指定时,您只能在选择列表中指定表达式。

标签: sqlsql-servertsqlexists

解决方案


使用单个SELECT语句。内部SELECT语句是不必要的。我会将您的查询重写为:

SELECT TOP (1) @DescripcionArticuloVEL = DescripcionArticulo 
FROM TabVentasEnLineaDetalle 
WHERE IDArticulo = @IDArticulo; 

推荐阅读