NPGSQL CURSOR移动所有受影响的行(或行数)

时间:2016-01-28 10:04:58

标签: npgsql

我正在尝试使用npgsql从以下查询中获取“受影响行数”:

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

使用PgAdmin的SQL编辑器,运行此查询会显示:“查询成功返回:受影响的行数为5736行,执行时间为31毫秒。”

使用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相同的受影响行数吗?

1 个答案:

答案 0 :(得分:0)

这可能是因为您正在尝试获取多语句命令的受影响的行数 - 您的第一个语句创建了光标,而第二个语句实际上移动了它(尽管我不确定是什么& #34;受影响的行"意味着只需移动光标,而不是提取)。尝试用两个不同的命令发送语句,然后获取第二个命令的受影响的行。

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