【发布时间】:2018-06-22 18:18:03
【问题描述】:
我正在尝试创建一个执行更新的 postgresql 函数。我想让行受到影响。我知道这可以通过使用GET DIAGNOSTICS rows_affected = ROW_COUNT 来完成。但我正在尝试使用 Dapper Execute 函数,它可以返回自己受影响的行。据我所知,这只有在你有一个硬编码的查询调用时才有效,例如在 C# 中
IDbConnection dbConnection = new NpgsqlConnection(strConnection)
string command = "UPDATE myschema.mytable SET email = '' WHERE email NOT LIKE '%@%';"
int rowsAffected = dbConnection.Execute(command);
我想创建一个执行相同操作的函数,并让 Dapper 使用 Execute 而不是 Query 调用它。这是我目前所拥有的:
CREATE FUNCTION "Xtream"."fnUpdateUserID" () RETURNS VOID
AS $$
BEGIN
UPDATE myschema.mytable
SET email = ''
WHERE email NOT LIKE '%@%';
END;
$$ LANGUAGE 'plpgsql';
所以我的问题是,有没有办法在不向该函数添加类似 int return 的东西的情况下让行受到影响?换句话说,访问以下信息:“查询成功返回:2 行受影响,11 毫秒执行时间。”在 postgresql 查询窗口中直接调用 UPDATE myschema.mytable SET email = '' WHERE email NOT LIKE '%@%' 时返回。我知道RETURNS VOID 不适用于我正在尝试的内容。
换一种说法,有没有办法在 PostgreSQL 插入或更新函数上使用 Dapper Execute?
【问题讨论】:
标签: c# postgresql sql-update sql-insert dapper