+ -
当前位置:首页 → 问答吧 → 问1个获取动态SQL中执行变量的问题

问1个获取动态SQL中执行变量的问题

时间:2011-12-15

来源:互联网

示例脚本如下:
CREATE TABLE TEST2
(
ID VARCHAR(20),
NAME VARCHAR(20)
)

INSERT INTO TEST2
SELECT '1','A'
UNION ALL
SELECT '2','B'
UNION ALL
SELECT '3','C'

DECLARE @StrSql varchar(max),@StrContent varchar(1000)
SELECT @StrContent = ''
select @StrSql = 'SELECT @StrContent = ID +'',''+ @StrContent FROM TEST2'
EXEC(@StrSql)
PRINT @StrContent

最终的结果是@StrContent = 1,2,3,但单独写好用,我放到动态sql中执行就不行(找不到变量 @StrContent),求解上面问题。

作者: fox123871   发布时间: 2011-12-15

SQL code
CREATE TABLE TEST2
(
ID VARCHAR(20),
NAME VARCHAR(20)
)

INSERT INTO TEST2
SELECT '1','A'
UNION ALL
SELECT '2','B'
UNION ALL
SELECT '3','C'

DECLARE @StrSql nvarchar(max),@StrContent nvarchar(1000)
SELECT @StrContent = ''
select @StrSql = 'SELECT @StrContent = @StrContent+ID +'','' FROM TEST2'
EXEC sp_executesql @StrSql,N'@StrContent nvarchar(1000) output',@StrContent OUTPUT

PRINT @StrContent


--1,2,3,


作者: roy_88   发布时间: 2011-12-15

需要用sp_executesql獲取,用nvarchar類型,樓主注意看我寫的格式,你的字符串會讓3在前面顯示

作者: roy_88   发布时间: 2011-12-15