tsql:无法从proc <table> </table>中选择

时间:2011-02-01 07:38:35

标签: sql-server tsql

我正在运行sql server 2008而我正在尝试运行查询

OPEN CUR_InvHeader
FETCH NEXT FROM CUR_InvHeader INTO 
    @CH_iBilling_Log_RecID
WHILE (@@FETCH_STATUS = 0) BEGIN        --Loop for Cur_InvHeader

select * into tarInvoiceDetail_201101 FROM OPENROWSET('SQLNCLI', 'Server=(local);Trusted_Connection=yes;',
     'EXEC _sp_cwm5_GetInvoiceDetail @CH_iBilling_Log_RecID')

我收到错误

  

OLE DB提供程序“SQLNCLI10”用于链接   服务器“(null)”返回消息   “延期准备不可能   完成“。

我已经运行sp_configure'ad hoc ..',1 使用覆盖重新配置 确保我可以对openrecordset

运行select

任何想法我可能做错了什么? 提前谢谢

1 个答案:

答案 0 :(得分:1)

首先,您的“EXEC _sp_cwm5_GetInvoiceDetail @CH_iBilling_Log_RecID”语句将被评估为常量,而不是将@CH_iBilling_Log_RecID的值传递给OPENROWSET。您必须将整个“SELECT * INTO ...”替换为字符串变量并在其上运行sp_executesql。

第二件事是错误的是你的“select into”语句每次都会创建tarInvoiceDetail_201101,因为INTO在运行时会创建一个新表。因此,如果您的光标覆盖多行,您将在第二次传递时收到错误。

此外,“Server =(local)”代表什么?您是否尝试在连接到远程服务器时对您的SQL Server本地副本使用OPENROWSET?或者您是否尝试使用OPENROWSET来解决您无法直接使用存储过程作为INSERT源的限制?