在线等。。。。。。。急

zhang_yugang 2009-04-08 02:24:28
为什么从视图中取数据的时候
加上WHERE条件必须用动态数据库语句
普通的让一个 列=@A的形式取半天都出不来

这是为什么?

还有在动态数据库语句中必须把数据写入全局临时表中
如果用一般得临时表,执行完动态的后,临时表消失,
下面就无法用到这个临时表了
...全文
66 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhang_yugang 2009-04-08
  • 打赏
  • 举报
回复
关于 临时表的问题已解决,,如2楼所说/。。。
Zoezs 2009-04-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhang_yugang 的回复:]
条件多了,数据多了,就时间非常巨大了
[/Quote]
数据多,你需要把有索引的条件放在前面。
Zoezs 2009-04-08
  • 打赏
  • 举报
回复
临时表在一个存储中,只要你不drop,肯定不会消失啊。
Zoezs 2009-04-08
  • 打赏
  • 举报
回复
那可能是你建这个视图的表的索引没加好。
zhang_yugang 2009-04-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ws_hgo 的回复:]
SQL codeselect * from viewname where colname='adfadf'
create index IX_Col on viewname (colname)


这样了?
[/Quote]

这个视图的索引是不可以随便加的
ws_hgo 2009-04-08
  • 打赏
  • 举报
回复
select * from viewname where colname='adfadf'
create index IX_Col on viewname (colname)

这样了?
zhang_yugang 2009-04-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 libin_ftsafe 的回复:]


1、一定是你写错了

2、在动态SQL执行之间,先把临时表创建好,在执行完动态SQL之后,临时表就仍然可用,如:…
[/Quote]

我没有定义临时表,直接 是这种格式的
如果存在先删除
然后是动态的下面这些:
exec('SELLECT * INTO #TEMP FROM 视图')
zhang_yugang 2009-04-08
  • 打赏
  • 举报
回复
恩 刚看了下 有问题

第一种写法
declare @str varchar(100)
set @str='adfadf'
select * from viewname where colname=@str

第二种写法
select * from viewname where colname='adfadf'

第一种写法花的时间基本上是第二种的九倍


条件多了,数据多了,就时间非常巨大了
子陌红尘 2009-04-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhang_yugang 的帖子:]
为什么从视图中取数据的时候
加上WHERE条件必须用动态数据库语句
普通的让一个 列=@A的形式取半天都出不来

这是为什么?

还有在动态数据库语句中必须把数据写入全局临时表中
如果用一般得临时表,执行完动态的后,临时表消失,
下面就无法用到这个临时表了
[/Quote]

1、一定是你写错了

2、在动态SQL执行之间,先把临时表创建好,在执行完动态SQL之后,临时表就仍然可用,如:

create table #(id int,code varchar(10))
exec('insert into # select 1,''a''' union select 2,''b'')
select * from #
sdhdy 2009-04-08
  • 打赏
  • 举报
回复
--这样有问题吗?
declare @str varchar(100)
set @str='adfadf'
select * from viewname where colname=@str

22,181

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧