sql-server – 在R中执行SQL Server存储过程

我在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”’.

点赞