当前位置: 代码迷 >> Sql Server >> sql临时表 如何多次操作
  详细解决方案

sql临时表 如何多次操作

热度:87   发布时间:2016-04-24 09:25:46.0
sql临时表 怎么多次操作
alter proc [dbo].[CRM_INF_Verification_GY]
(
  @InType varchar(50),
  @Agentid varchar(50)
)
as 
begin
DECLARE @str varchar(2000)
DECLARE @temptablename varchar(50)
DECLARE @int varchar(2000)

set @temptablename= 'CRM_INF_Verification_Q_'+@Agentid
print @temptablename
 if  not exists (select * from dbo.sysobjects where id = object_id(@temptablename) and OBJECTPROPERTY(id, N'IsUserTable') = 1)
 begin
 exec ('create table  [dbo].['+@temptablename+'] 
 (
    ID int,
InType varchar(50),
NUM varchar(50),
Question varchar(50),
    IsUse int,
CreateTime datetime,
CreateUser varchar(50)
  ) ')
   exec (' insert into [dbo].['+@temptablename+'] (ID,InType,NUM,Question,IsUse,CreateTime,CreateUser)
         select  ID,InType,NUM,Question,IsUse,CreateTime,CreateUser from CRM_INF_Verification where Intype='+ @InType+' order by newID()')
 end

  else
 begin
--SET @int =' select Count(*) from [dbo].['+@temptablename+']'
----exec( 'select Count(*) from [dbo].['+@temptablename+']')
--EXEC @int;
--print @int
--print @temptablename
--set @temptablename= 'CRM_INF_Verification_Q_'+@Agentid
--select @NUM=count(*) from CRM_INF_Verification_Q_1001


    Select @int= Count(*)   from  [dbo].['+@temptablename+']

if (@int=0)
begin
    exec (' insert into [dbo].['+@temptablename+'] (ID,InType,NUM,Question,IsUse,CreateTime,CreateUser)
         select  ID,InType,NUM,Question,IsUse,CreateTime,CreateUser from CRM_INF_Verification where Intype=' +@InType+'  order by newID()')
print @temptablename
end
 end
 if(1=1)
      exec(' select top 3 ID,Question from [dbo].['+@temptablename+']') ;
    exec(' delete from [dbo].['+@temptablename+'] where id in (select top 3 ID from [dbo].['+@temptablename+'] )');
print @temptablename
 end
------解决思路----------------------
--刚刚也有一个人问了,也是你?
declare @NUM INT;
declare @temptablename Nvarchar(20)
declare @sql  Nvarchar(2000)
declare @num_out int;
declare @params nvarchar(200)

set @temptablename='BASMIG'
set @sql ='Select @num_out=count(*) from '+ @temptablename
set @params ='@num_out int output '

exec sp_executesql 
@sql,
@params,
@num_out=@NUM OUTPUT
SELECT @NUM
  相关解决方案