当前位置: 代码迷 >> Sql Server >> exec 简单有关问题请问
  详细解决方案

exec 简单有关问题请问

热度:24   发布时间:2016-04-27 18:35:55.0
exec 简单问题请教
如下:
SQL code
declare @0 varchar(8000)select @0=''select @[email protected]+a from #tmp0 where gid=0exec('select  js_no,js_yxdate,js_xlm,js_ch,js_fbtime,js_bclx [email protected]+' into #from djjj  where js_hc=0 and js_xlm= case '''' when  ''''  then js_xlm else '''' end and js_yxdate between  ''2011-11-20'' and ''2011-11-20''group by js_no,js_yxdate,js_xlm,js_ch,js_fbtime,js_bclx ')

执行后,想查询临时表#查询不到;
直接使用下列语句,则可以查询临时表#
SQL code
select  js_no,js_yxdate,js_xlm,js_ch,js_fbtime,js_bclx into #from djjj  where js_hc=0 and js_xlm= case '' when  ''  then js_xlm else '' end and js_yxdate between  '2011-11-20' and '2011-11-20'group by js_no,js_yxdate,js_xlm,js_ch,js_fbtime,js_bclx

exec 执行 select 语句,为什么查询临时表就会提示该表不存在呢?

------解决方案--------------------
呵呵,那个表在动态语句的会话里.
不在你当前的这个会话里.
改成 全局的变量就可以了.
--into ##


------解决方案--------------------
SQL code
--给你举个例子,你一看就明白当前会话的意思了exec('create table #t(id int)')exec('select * from #t')/*invalid object name '#t'.*/exec('create table #t(id int) select * from #t')/*id-----------(0 row(s) affected)*/
------解决方案--------------------
SQL code
declare @0 varchar(8000)select @0=''select @[email protected]+a from #tmp0 where gid=0exec('select  js_no,js_yxdate,js_xlm,js_ch,js_fbtime,js_bclx [email protected]+' into #from djjj  where js_hc=0 and js_xlm= case '''' when  ''''  then js_xlm else '''' end and js_yxdate between  ''2011-11-20'' and ''2011-11-20''group by js_no,js_yxdate,js_xlm,js_ch,js_fbtime,js_bclx select * from #')
------解决方案--------------------
探讨
谢谢各位。
方法一行不通,因为后面的语句要多次用到临时表#;
方法二创建全局的临时表,多个人同时执行该存储过程时,会不会提示该表已存在??



引用:
SQL code

declare @0 varchar(8000)
select @0=''
select @[email protected]+a from #tmp0 where gid=0
exec('sel……

------解决方案--------------------
探讨

请教小F:
若干人同时执行该存储过程,会不会出现我刚创建了表##tb,就被别人drop 掉了?


引用:
引用:
谢谢各位。
方法一行不通,因为后面的语句要多次用到临时表#;
方法二创建全局的临时表,多个人同时执行该存储过程时,会不会提示该表已存在??



引用:
……
  相关解决方案