动态他Transact-SQL语句处理中的常见问题演示.sql
2012-05-18 16:01
579 查看
--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
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
相关文章推荐
- T-sql GroupBy语句常见问题处理
- Mybatis:关于动态生成sql语句的一些问题
- SQL 15405 Sql 18452 SQL2005 233 SQL常见问题处理方法
- 动态sql语句超过8000个字符的处理方法
- 动态SQL语句传参问题总结一
- SQL语句常见问题的总结(持续更新)
- 用动态生成SQL语句的方法处理数据
- JAVA sql语句动态参数问题
- 常见问题及解决办法 整理之9(动态语句语法)
- sql语句参数化处理的参数赋值问题
- oracle对动态sql语句的处理
- SQL语句常见问题的总结(持续更新)
- 动态SQL— —模糊查询语句(存储过程)中关于百分号%的处理
- Delphi XE8中开发DataSnap程序常见问题和解决方法 (二)想对DBExpress的TSQLDataSet写对数据库操作的SQL语句出错了!
- SQL语句常见问题的总结(持续更新)
- 在论坛中出现的比较难的sql问题:15(生成动态删除列语句 分组内多行转为多列)
- 动态SQL语句的一些常见写法
- Delphi XE8中开发DataSnap程序常见问题和解决方法 (二)想对DBExpress的TSQLDataSet写对数据库操作的SQL语句出错了!
- 动态sql中使用select into语句出错问题
- oracle动态sql语句处理