对象名用变量,要用动态sql语句的。
exec('select * from '+@attrValue)

解决方案 »

  1.   

    use master
    goCREATE PROCEDURE TestTable
      @TableName varchar(50)
    ASexec('select * from ' + @TableName);
    goexec TestTable 'syscolumns'drop procedure TestTable
      

  2.   

    wgsasd311说的正确,要传入的是结果集,你一定要救我。
      

  3.   

    必须在存储过程外部定义一个表变量如declare @rscount table (id int,value text)
    --------插入要传的记录 可以像表一样操作如下
    insert into @rscount select * from  tablename
    ------------调用过程
     exec ADD_AddProduct @ProductName,@rscount
    go
      

  4.   

    To: hlq8210(影子)
      那存储过程ADD_AddProduct 怎样写。就像我上面写的,会报错误 :
        服务器: 消息 170,级别 15,状态 1,行 1
        第 1 行: 'ADD_AddProduct' 附近有语法错误。
       服务器: 消息 137,级别 15,状态 1,行 3
       必须声明变量 '@attrValue 。
      

  5.   

    传入结果集似乎不行,可以换个方式吗? 1.如果结果集是查询表得到的,查询语句先写在sp1,在你的sp2调用sp1后插入到临时表,
    insert #
    exec sp12.另外就是openrowset,这个可以跨服务器查询!
      

  6.   

    To:MonrinTea(一勺抹茶)
      我在Transact_SQL帮助文档上看到 指定参数类型可以是SQL SERVER任意数据类型。具体的我不知道
    输入参数类型到底能不能是table类型。
      不过今你一说我现在用了你讲解的方法,可以实现,谢谢。但不知到有没有更好的方法,希望大家集思广益。
      

  7.   

    table类型是sql server2000新增的类型,传表参数是可以的,这句select * from @attrValue改成exec('select * from'+ @attrValue)就可以了