gpt4 book ai didi

RODBC 命令 'sqlQuery' 在 t-SQL 中存在表变量问题

转载 作者:行者123 更新时间:2023-12-04 23:18:40 25 4
gpt4 key购买 nike

我正在使用我在 Microsoft SQL Server 2012 上应用的 RODBC 包。

现在我发现了一个令我困惑的现象。

如果我使用 RODBC 命令 sqlQuery 运行以下查询,那么在 R 中,我将返回一个包含 Country、CID、PriceID 和 WindID 列的空数据框。

DECLARE @tbl_IDs TABLE 
(
Country nvarchar(30),
CID nvarchar(5),
PriceID int,
WindID int
)

SELECT * FROM @tbl_Ids

到目前为止,一切都很好。

但是,如果我尝试将记录写入表变量并执行
DECLARE @tbl_IDs TABLE 
(
Country nvarchar(30),
CID nvarchar(5),
PriceID int,
WindID int
)

INSERT INTO @tbl_IDs
VALUES
('Germany', 'DE', 112000001, 256000002);

SELECT * FROM @tbl_Ids

然后,在 R 中,结果将是一个空字符,而不是具有一条记录的数据框。同样的查询仍然可以完美地与 SQL Server Management Studio 配合使用。
此外,我们在执行 R-Query 时跟踪了 DB 服务器的行为,似乎服务器完美地处理了它。似乎是 RODBC 接口(interface)有问题将结果返回到 R 控制台。

有谁知道如何解决这个问题?

最佳答案

尝试切换 NOCOUNT如下:

old_qry <- "
DECLARE @tbl_IDs TABLE
(
Country nvarchar(30),
CID nvarchar(5),
PriceID int,
WindID int
)

INSERT INTO @tbl_IDs
VALUES
('Germany', 'DE', 112000001, 256000002);

SELECT * FROM @tbl_Ids
"
##
new_qry <- "
SET NOCOUNT ON;
DECLARE @tbl_IDs TABLE
(
Country nvarchar(30),
CID nvarchar(5),
PriceID int,
WindID int
);

INSERT INTO @tbl_IDs
VALUES
('Germany', 'DE', 112000001, 256000002);
SET NOCOUNT OFF;
SELECT * FROM @tbl_Ids
"
R> sqlQuery(tcon, gsub("\\n", " ", old_qry))
#character(0)
R> sqlQuery(tcon, gsub("\\n", " ", new_qry))
# Country CID PriceID WindID
#1 Germany DE 112000001 256000002

基本上你想 SET NOCOUNT ON在代码的开头,和 SET NOCOUNT OFF就在决赛前 SELECT陈述。

关于RODBC 命令 'sqlQuery' 在 t-SQL 中存在表变量问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33396013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com