PostgreSQL与SQL Server中的参数化查询

问题描述 投票:0回答:1

在我的一个R项目中,我正在使用以下代码将一些用户信息插入PostgreSQL数据库中,但是现在我想将其切换到SQL Server。不幸的是,这失败了。

library(DBI)
conn <- #database connection
# data$data is a list 
    dbExecute(
              conn,
              "INSERT INTO users (user_uuid, user_firstname, user_lastname, user_email, 
              user_role, owner_uuid, user_password, flag_user_active) VALUES ($1, $3, $4, $5, $6, $7, $2, TRUE)",
              params = c(
                list(user_uuid),
                list(user_password_encrypted),
                unname(data$data)
              )
            )

我感觉到SQL Server处理的参数化查询不同于PostgreSQL,但是不幸的是,我无法找到有关如何修改它的明确答案,因此它运行良好。我希望有人可以立即得到这个答案。谢谢!

r sql-server postgresql odbc dbi
1个回答
0
投票

下面的代码可以完成SQL Server的工作,但它不如适用于PostgreSQL的问题中的代码那么好。主要缺点是您不能像在PostgreSQL中那样引用VALUES中的变量。

library(DBI)
conn <- #database connection
# data$data is a list 
    dbExecute(
              conn,
              "INSERT INTO users (user_uuid, user_firstname, user_lastname, user_email, 
              user_role, owner_uuid, user_password, flag_user_active) VALUES (?, ?, ?, ?, ?, ?)",
              params = c(
                list(user_uuid),
                list(user_password_encrypted),
                unname(data$data)
              )
            )

请注意,参数的顺序必须与INSERT语句中的顺序相同。

© www.soinside.com 2019 - 2024. All rights reserved.