相要达到下面效果:
SELECT * FROM OPENQUERY(@lnk,EXEC @db.dbo.@p @a='a1',@b=0)说明:
@lnk为链接服务器
@db为链接服务器的数据库
@p为链接服务器的数据库中的存储过程
@a和@b为存储过程中的变量问题:我知道SELECT * FROM OPENQUERY(lnkName,'EXEC dbName.dbo.p ''a1'',0')的写法,但此时链接服务器、数据库和存储过程名称均为变量,而且存储过程中的参数还不只一个,如何处理?火线求助!

解决方案 »

  1.   

    用变量作对象名
    就只能用动态SQL了----------------------------------------------------------
    相要达到下面效果: 
    SELECT * FROM OPENQUERY(@lnk,EXEC @db.dbo.@p @a='a1',@b=0)
    ----------------------------------------------------------这个效果指的是 把存储过程返回的结果 查询出来吗?还是只激活存储过程就可以了?
      

  2.   


    如果这个可以:SELECT * FROM OPENQUERY(@lnk,EXEC @db.dbo.@p @a='a1',@b=0) 那么这个就应该可以了
    exec('SELECT * FROM OPENQUERY( '+@lnk+' ,EXEC '+@db+'.dbo.'+@p+' '+@a+'=''a1'','+@b+'=0)')
      

  3.   

    要达到下面效果: 
    SELECT * FROM OPENQUERY(@lnk,EXEC @db.dbo.@p @a='a1',@b=0) 说明: 
    @lnk为链接服务器 
    @db为链接服务器的数据库 
    @p为链接服务器的数据库中的存储过程 
    @a和@b为存储过程中的变量 问题:我知道SELECT * FROM OPENQUERY(lnkName,'EXEC dbName.dbo.p ''a1'',0')的写法,但此时链接服务器、数据库和存储过程名称均为变量,而且存储过程中的参数还不只一个,如何处理? 火线求助! 
    先传给变量,
    再取变量。

    exec ('..')