我在R中执行SQL Server 2008存储过程时遇到问题.R中的执行如下:
library(RODBC)
dbhandle <- odbcDriverConnect('driver={SQLServer};server=xxx;database=xxx;trusted_connection=true')
data <-sqlquery(dbhandle, "EXEC ihshsf35.FPR_GET_PF10 @tipo_pes='F' , @date_process='2016-11-30'")
odbcCloseAll()
R中出现的错误:
Error in as.POSIXlt.character(x, tz, ...) :
character string is not in a standard unambiguous format
存储过程调用特征和日期以从数据库中提取信息:
Procedure [ihshsf35].[FPR_GET_PF10]
(
@tipo_pes varchar(1),
@date_process as datetime
)
AS
BEGIN
我从SAS和SPSS等其他系统执行此存储过程时没有遇到任何问题,但是当我尝试使用R时出现错误.
注意:在SQL服务器中,数据的格式为“aaaa-mm-dd”,与我在R中询问的格式相同
任何人都可以帮我解决R中的问题吗?
提前致谢
最佳答案 您是否愿意尝试以下方法?
@date_process期待一个日期时间值,但我不认为这会产生太大的影响.我之所以选择使用RODBCext是因为1)从SQL注入更安全,2)使用单引号(‘)让我对SQL更加头疼,而不是重新计算.
library(RODBCext)
dbhandle <- odbcDriverConnect('driver={SQLServer};server=xxx;database=xxx;trusted_connection=true')
data <-sqlExecute(dbhandle,
"EXEC ihshsf35.FPR_GET_PF10 @tipo_pes=? , @date_process=?",
data = list(tipo_pes = 'F',
date_process = '2016-11-30 00:00:00'),
fetch = TRUE)
odbcCloseAll()
在单引号问题上,同样值得尝试逆转单引号和双引号.所以’EXEC ihshsf35.FPR_GET_PF10 @tipo_pes =“F”,@ date_process =“2016-11-30”’.