Create procedure SelectMax(@article_name varchar(50))
AS
declare @ID int
begin
  exec('select * into ##TempTable from ' + @article_name)
  select @ID = max(id) from ##TempTable
  select @ID
end;三少 :o)

解决方案 »

  1.   

    To largewang:
    怎么不可以?????三少 :o)
      

  2.   

    to ePing:
    你的方法我见过,好象不行。总提示##TempTable没定义。这是怎么回事?
      

  3.   

    to ePing : 您忘了 Drop Table ##TempTableCreate procedure SelectMax(@article_name varchar(50))
    AS
    declare @ID int
    begin
      exec('select * into ##TempTable from ' + @article_name)
      select @ID = max(id) from ##TempTable
      Drop Table ##TempTable 
      select @ID
    end;
      

  4.   

    如果在sqlserver中这种方法绝对可以.用下面一种方式可能看得清楚些.
    Create procedure SelectMax(@article_name varchar(50))
    as
    declare @ID int,
            @SqlStr varchar(100)
    begin
      select @SqlStr = 'select * into ##TempTable from ' + @article_name
      exec(@SqlStr)  --将这个表名为变量名的表存储到一个全局临时表中,这样在EXEC外部定义的变量可以使用.
      select @ID = max(id) from ##TempTable
      if exists(select * from TempDB..sysobjects where name = '##TempTable')
        Drop table ##TempTable  --如果临时表存在,就删掉它,谢谢jingpingyi的提醒.
      select @ID
    end再试一下.三少 :o)
      

  5.   

    to ePing:
    成功了!多谢。其实我看到很多人都问过这个问题,都是你回答的。看来你对SQL Server很熟悉啊!