用游标:create proc a
@1 cursor varying out,
@2 cursor varying out
as
declare b cursor local for select * from table1
declare c cursor local for select * from table1
open b
open c
set @1=b
set @2=c
godeclare @a cursor,@b cursorexec a @a out,@b out
fetch @a
fetch @b
fetch @b
fetch @b
fetch @aclose @a
close @bdeallocate @a
deallocate @bdrop proc a

解决方案 »

  1.   

    可以把表名作为变量if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[test]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    drop procedure [dbo].[test]
    GOCREATE PROCEDURE test 
    @tableName  varchar(50)
    AS
    DECLARE
         @sql            varchar(5000)
         
    SET @sql = ''SET @sql = @sql +
    '
      select * from ' + @tableName
    'EXEC(@sql)
    GO
      

  2.   

    sorry,应该是SET @sql = @sql +
    '
      select * from ' + @tableName + '
    '少了+ ’