使用 RODBC 将 SQL 存储过程结果转换为 data.frame 格式

Posted

技术标签:

【中文标题】使用 RODBC 将 SQL 存储过程结果转换为 data.frame 格式【英文标题】:Getting SQL stored procedure results into data.frame format using RODBC 【发布时间】:2011-12-09 19:42:33 【问题描述】:

我正在使用 RODBC 包在我的 SQL 服务器中查询结果。在我的 SQL Server Mgmt 中执行时,我编写了某个存储过程。 studio(例如),返回一个表。但是,当我通过 R 运行查询时,它返回 character(0)

# Execute command...
sqlQuery(production,"exec port.tdp_RISK2_ModelRunCompare @ModelRunId1 = 399")

奇怪的是……当我做类似的事情时……

sqlQuery(production,"exec sp_who")

我得到一个结果表...

帮助?

【问题讨论】:

那么你在sql server中有一个名为port的架构? 【参考方案1】:

我遇到了同样的问题。

您可以尝试使用:

set nocount on

在 MS SQL Server 存储过程中,因此它只返回一个数据集。

问候,

【讨论】:

存储过程不应该通过“PRINT”命令打印任何消息也是非常重要的。 喜欢这个链接codeworkaround.tumblr.com/post/38942730894/…【参考方案2】:

试试这个:

sqlQuery(production,"exec port.tdp_RISK2_ModelRunCompare @ModelRunId1 = 399", errors=FALSE)

【讨论】:

【参考方案3】:

还可以尝试写入新的数据框。当我尝试使用 sqlQuery 函数覆盖现有数据框时,我不断收到 character(0)。

【讨论】:

以上是关于使用 RODBC 将 SQL 存储过程结果转换为 data.frame 格式的主要内容,如果未能解决你的问题,请参考以下文章

将 odbc::dbconnect 转换为 rodbc::odbcDriverConnect

使用 RODBC 和 MS SQL Server 的长时间运行查询超时

将 R 变量传递给 RODBC sql 查询? [复制]

将存储过程 PL/SQL 转换为 Java

将 SQL Server 存储过程转换为 Oracle 过程以从表中查询

需要将以下存储过程从 Oracle 转换为 SQL