使用sql string插入varchar

时间:2015-03-30 05:59:55

标签: sql-server tsql

我想在我的SQL中用Transact-SQL创建一个EXEC,如:

set @name = 'test'
set @sql =  'insert into TempTable values('+@name+')'
EXEC( @sql)

但是我无法在sql字符串中插入varchar,因为我无法将'进入字符串,以便知道@name是一个varchar。

3 个答案:

答案 0 :(得分:0)

首先使用declare,set声明变量,然后你可以使用它。 在完整代码下面:

DECLARE @name VARCHAR (500)
SET @name = 'test';
set @sql =  'insert into TempTable values('''+@name+''')'
EXEC( @sql)

使用(''')三个引号来添加你的varchar。

答案 1 :(得分:0)

这样的简单插入语句不需要使用Dynamic SQL执行。您可以使用下面的查询轻松实现相同的目标。

DECLARE @name VARCHAR (500)
SET @name = 'test';
insert into TempTable values(@name)

有关动态sql相关问题的详细信息,请参阅以下链接。

http://www.sommarskog.se/dynamic_sql.html

答案 2 :(得分:0)

在处理动态查询时,请忘记使用EXEC。在SQL Server中,您应该使用sp_executesql

DECLARE @name VARCHAR(500);
SET @name = 'test';
DECLARE @query = NVARCHAR(MAX) = 'INSERT INTO TempTable VALUES (@name)';

EXEC sp_executesql
  @stmt = @query,
  @params = N'@name VARCHAR(500)',
  @name = @name

有了这个

  • 您可以避免不必要的类型转换(INT - > VARCHAR等)
  • 可以传递本机数据类型
  • 更安全一点(不会解决所有问题,但有点比将变量值注入查询字符串更好)
相关问题