SQL Server 2008 表变量 临时表
2015-11-05 20:24
260 查看
最近做一个报表,其中 在报表中用到了存储过程,游标,cte表达式,临时表和表变量。
在游标中循环遍历cte中的数据,把对应的数据存放在变量里面,之后把变量插入到表变量中,游标结束后,想要根据存储过程的参数对表变量进行过滤时,问题就来了。
用动态sql拼接sql语句时,就会出错。提示时没有声明表变量。
其实,表变量不能运用在动态sql中。怎么办呢?我是把表变量中的数据插入到临时表中,之后 在动态sql中实用临时表进行拼接就可以了。
不知道 大家 有没有更好的想法。
注:
临时表 :
表变量
在sql拼接时,拼接条件有一定的特殊写法
在游标中循环遍历cte中的数据,把对应的数据存放在变量里面,之后把变量插入到表变量中,游标结束后,想要根据存储过程的参数对表变量进行过滤时,问题就来了。
用动态sql拼接sql语句时,就会出错。提示时没有声明表变量。
其实,表变量不能运用在动态sql中。怎么办呢?我是把表变量中的数据插入到临时表中,之后 在动态sql中实用临时表进行拼接就可以了。
不知道 大家 有没有更好的想法。
注:
临时表 :
#tablename
表变量
DECLARE @tablename TABLE ( ..... )
在sql拼接时,拼接条件有一定的特殊写法
DECLARE @sql NVARCHAR(max) DECLARE @cloum NVARCHAR(20) SET @sql='select * from table where 条件列='+''''+@cloum+''''
相关文章推荐
- oracle习题1~13
- mysql select中子查询中使用强制索引的优化案例
- sqoop导入oracle数据至hive
- redis中各种数据类型对应的jedis操作命令
- Error 2002 (HY000): Can't connect to local MySOL server through socket '/var/lib/mysql.sock' (2 "No
- mysql版本 5.6.10,UNIX_TIMESTAMP和FROM_UNIXTIME支持最大时间戳转换
- Oracle中查看建立索引和使用索引的注意点
- Oracle开发之:窗口函数 3( rows between unbounded preceding and current row)
- Oracle开发专题之:分析函数2(Rank, Dense_rank, row_number)
- Oracle开发专题之:分析函数(OVER)1
- oracle归档的开启及关闭
- mysql order by注入技巧
- oracle归档日志清理
- MySQL安全配置详解
- SQL Server——热备份
- mysql热备份
- MS SQL Server 数据库连接字符串
- Oracle——热备份
- mysql修改配置文件进行优化
- 20151105b Oracle控制文件信息,视图介绍,sga内存介绍