Select * From 
openrowset('sqloledb', 'Trusted_Connection=yes',
'exec JY_Material.dbo.JY_Select_APInfo_ByInvoiceNO''38'',''人民币''')直接这么写就没有错,但是如果
调用存储过程sp,变为参数传递就不行了Declare @tep varchar(100)
Set @tep='人民币'
Select * From 
openrowset('sqloledb', 'Trusted_Connection=yes',
'exec JY_Material.dbo.sp,''38'',''''+@tep+''''')请问这种情况应该怎么办?

解决方案 »

  1.   

    Declare @tep varchar(100)
    Set @tep='人民币'
    exec('Select * From 
    openrowset('+'sqloledb'+','+ 'Trusted_Connection=yes'+','+
    'exec JY_Material.dbo.sp,''38'','''+@tep+''')')
      

  2.   

    Declare @tep varchar(100)
    Set @tep='人民币'Declare @sql Nvarchar(1000)
    Set @sql = 'Select * From openrowset(''sqloledb'', ''Trusted_Connection=yes'',''exec JY_Material.dbo.JY_Select_APInfo_ByInvoiceNO ''''38'''','''''+@tep+''''''''Exec(@sql)
    原理就是先用动态SQL拼接出要执行的SQL语句,再用Exec()执行。
    注意要用两个“‘”来代替原来的一个“’”。