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+''''')请问这种情况应该怎么办?
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+''''')请问这种情况应该怎么办?
Set @tep='人民币'
exec('Select * From
openrowset('+'sqloledb'+','+ 'Trusted_Connection=yes'+','+
'exec JY_Material.dbo.sp,''38'','''+@tep+''')')
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()执行。
注意要用两个“‘”来代替原来的一个“’”。