CREATE PROCEDURE pr_include 
@ttablename nvarchar,
@iid int
AS
declare @tablename nvarchar(40)
declare @id int
declare @strsql nvarchar(40)
set @strsql=N'select * from @tablename where i_epid=@id'
exec sp_executesql @strsql,
@parms=N'@tablename nvarchar,@id int',
@tablename=@ttablename,
@id=@iid
GO

解决方案 »

  1.   

    按你的写更奇怪 会出现,明明是声明了
    服务器: 消息 137,级别 15,状态 2,行 1
    必须声明变量 '@tablename'。
      

  2.   

    sp_executesql返回的代码是0(成功)或1(失败),并不是返回查询数据集.
      

  3.   

    CREATE PROCEDURE pr_include 
    @ttablename nvarchar(20),
    @iid int
    AS
    declare @id int
    declare @strsql nvarchar(40)
    set @strsql=N'select * from '+@ttablename+' where i_epid=@id'
    exec sp_executesql @strsql,@parms=N'@id int',@id=@iid
    GOpr_include 'include',1
      

  4.   

    或者:CREATE PROCEDURE pr_include 
    @ttablename nvarchar(20),
    @iid int
    AS
    --declare @tablename nvarchar(40)
    declare @id int
    declare @strsql nvarchar(40)
    set @strsql=N'exec(select * from @tablename where i_epid=@id)'
    exec sp_executesql @strsql,
    @parms=N'@tablename nvarchar,@id int',
    @tablename=@ttablename,
    @id=@iid
    GOpr_include 'include',1 
      

  5.   

    上面的改:CREATE PROCEDURE pr_include 
    @ttablename nvarchar(20),
    @iid int
    AS
    --declare @tablename nvarchar(40)
    declare @id int
    declare @strsql nvarchar(40)
    set @strsql=N'exec(''select * from ''+@tablename+'' where i_epid=@id)'
    exec sp_executesql @strsql,
    @parms=N'@tablename nvarchar,@id int',
    @tablename=@ttablename,
    @id=@iid
    GOpr_include 'include',1