我正在尝试使用R的RODBC
库将其插入具有标识列的SQL SERVER 2012中的表tbl
中。我将插入内容如下:
INSERT INTO tbl(col1, col2, col3)
VALUES (1, 2, 3)
,然后我想获取标识列的值。我知道我需要做SELECT SCOPE_IDENTITY()
,但我不知道该如何做。这是我尝试过的:
library(RODBC)
query.str <- "
INSERT INTO tbl(col1, col2, col3)
VALUES (1, 2, 3);
SELECT SCOPE_IDENTITY();
"
some.return <- sqlQuery(dbcon, query.str)
some.return
没有任何价值。我希望SCOPE_IDENTITY()
的输出在那里……关于如何获得身份价值的任何想法?
答案 0 :(得分:0)
我能够以某种肮脏的方式使它工作。我不确定这是否是唯一的方法-我不喜欢向sql server发出2条语句,因为这在并行环境中可能会有风险...但是作为一种解决方案,它确实可行: / p>
library(RODBC)
#semicolon at the end of the sql seems significant
query.str <- "
INSERT INTO tbl(col1, col2, col3)
VALUES (1, 2, 3);
"
output <- sqlQuery(dbcon, query.str)
if (is.character(output) && length(output) > 0)
stop(paste("SQL ERROR: ", output))
reg.id <- sqlQuery(dbcon, "SELECT SCOPE_IDENTITY()")
if (is.character(reg.id) && length(reg.id) > 0)
stop(paste("SQL ERROR: ", reg.id))
reg.id[[1]]