NPGSQL CURSOR MOVE ALL 获取受影响的行(或行数)

NPGSQL CURSOR MOVE ALL getting affected rows (or row count)

我正在尝试使用 npgsql 从以下查询中获取 "rows affected" 计数:

DECLARE cursor SCROLL CURSOR FOR SELECT * FROM public."table";
MOVE ALL IN cursor;

使用 PgAdmin 的 SQL 编辑器,运行 此查询给出:"Query returned successfully: 5736 rows affected, 31 msec execution time."

使用 npgsql:

var transaction = conn.BeginTransaction();
NpgsqlCommand command = new NpgsqlCommand("DECLARE cursor SCROLL CURSOR FOR SELECT * FROM public.\"PARTIJ\"; MOVE ALL IN cursor", conn);
var count = command.ExecuteNonQuery();
// I valided here the cursor did move to end of result -- so cursor is working.
transaction.Commit();

我原以为是 5736,但计数等于 -1。我能否获得与 PgAdmin 使用 npgsql 时相同的受影响行数?

这可能是因为您正在尝试获取多语句命令的受影响行数 - 您的第一条语句创建了游标,而第二条语句实际移动了它(尽管我不确定 "rows affected" 意味着只是移动光标,而不是获取)。尝试在两个不同的命令中发送您的语句并获取第二个受影响的行。

除此之外,这里使用游标的任何特殊原因而不仅仅是做 SELECT COUNT(*) FROM public."table"?