现在位置:
首页 > SQL Server > 正文
动态SQL语句处理中的常见问题
--1.数据类型转换的问题
- DECLARE @value int
- SET @value=100
- DECLARE @sql varchar(8000)
- SET @sql='SELECT * FROM tbname WHERE col='+@value
- EXEC(@sql)
- GO
/*======================================================*/
--2.字符串边界符的问题
- DECLARE @value varchar(10)
- SET @value='aa'
- DECLARE @sql1 varchar(8000),@sql2 varchar(8000),@sql3 varchar(8000)
- SET @sql1='SELECT * FROM tbname WHERE col1='+@value
- SET @sql2='SELECT * FROM tbname WHERE col1=''+@value+'
- SET @sql3='SELECT * FROM tbname WHERE col1='''+@value+''''
- GO
- DECLARE @value varchar(10)
- SELECT @value='a''a'
- DECLARE @sql varchar(8000)
- SET @sql='SELECT * FROM tbname WHERE col='''+@value+''''
- EXEC(@sql)
- GO
/*======================================================*/
--3.表名及字段名的问题
- DECLARE @tbname sysname
- SET @tbname='sysobjects'
- SELECT * FROM @tbname
- GO
- DECLARE @tbname sysname
- SET @tbname='sysobjects'
- EXEC sp_executesql N'SELECT * FROM @tbname',N'@tbname sysname',@tbname
- GO
/*======================================================*/
--4.返回值的问题
- DECLARE @tbname sysname,@sql varchar(100)
- SET @sql='SELECT @tbname=name FROM sysobjects where id=1'
- EXEC(@sql)
- SELECT @tbname
- GO
- DECLARE @tbname sysname,@sql varchar(100)
- SET @sql='SELECT '+@tbname+'=name FROM sysobjects where id=1'
- EXEC(@sql)
- SELECT @tbname