我有一个项目需要保存存储过程的返回值。
declare @query_bereich nvarchar(500)
SET @query_bereich = 'select bereich' + convert(varchar(2), @bereich) +
' from ImpArtGruppe where Artikelnummer = ' + @artnum
set @artgrp = (EXEC sp_executesql @query_bereich)
select @artgrp = ISNULL(@artgrp, '')
select @artgrp
现在我遇到的问题是,返回值始终为0.我猜这是默认情况,因为在另一种情况下,这将是一个可以有多个值的restulset。但在我的情况下,我确保查询始终只返回一个。
我也尝试过在google上找到的代码:
EXEC @artgrp = sp_executesql @query_bereich
但这也行不通。
任何人都可以帮我吗?
答案 0 :(得分:2)
示例代码中没有存储过程。看起来您正在构建动态T-SQL查询,并希望存储该结果。
以下是一种方法,使用sp_executesql
,并假设@artgrp
的类型为varchar(50)
:
declare @query_bereich nvarchar(max)
set @query_bereich = 'select @artgrp = bereich' + convert(varchar(2),@bereich) +
' from ImpArtGruppe where Artikelnummer = ''' + @artnum + ''''
declare @artgrp varchar(50)
exec sp_executesql @query_bereich, '@artgrp varchar(50) output', @artgrp output
答案 1 :(得分:0)