情况:SQL Server 2008查询在Informix IDS 11.7上调用存储过程
我需要使用动态SQL(不想在临时表中)从变量中捕获N'SELECT *
中的所有返回数据。
什么有效:数据从Informix返回正常,但我需要在表格的列名中。
我尝试了什么:
N'SELECT @Credit = *
不起作用,因为Informix SP中没有要引用的列名称,如N'SELECT @Credit = cx.SP_Credit
使用OpenQuery
尝试了链接服务器,但实际上遇到了更多麻烦 - 无法从Informix中获取数据。
通用代码:
DECLARE @parameter NVARCHAR(32)
DECLARE @Credit NVARCHAR (32)
SET @parameter = N'@Credit NVARCHAR (32) OUTPUT'
DECLARE @SQL_TEXT NVARCHAR(1000)
SET @SQL_TEXT = N'Select * from OPENROWSET ( ''MSDASQL'' , ''DSN=Informix_DB'' , ''execute procedure an_informix_stored_procedure ("parameter1", "parameter2")'') as cx'
EXECUTE sp_executesql
@SQL_TEXT,
@parameter,
@Credit OUTPUT;
select @Credit as credit;
到目前为止的结果(我希望存储在Credit列中的“1-3”当前为NULL):
想法?感谢。
答案 0 :(得分:1)
试试这个:
DECLARE @parameter NVARCHAR(32)
DECLARE @Credit NVARCHAR (32)
SET @parameter = N'@CreditOut NVARCHAR (32) OUTPUT'
DECLARE @SQL_TEXT NVARCHAR(1000)
SET @SQL_TEXT = N'SET @CreditOut = (Select * from OPENROWSET ( ''MSDASQL'' , ''DSN=Informix_DB'' , ''execute procedure an_informix_stored_procedure ("parameter1", "parameter2")'') as cx)'
EXECUTE sp_executesql
@SQL_TEXT,
@parameter,
@CreditOut = @Credit OUTPUT;
select @Credit as credit;