我正在尝试使用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相同的受影响行数吗?
答案 0 :(得分:0)
这可能是因为您正在尝试获取多语句命令的受影响的行数 - 您的第一个语句创建了光标,而第二个语句实际上移动了它(尽管我不确定是什么& #34;受影响的行"意味着只需移动光标,而不是提取)。尝试用两个不同的命令发送语句,然后获取第二个命令的受影响的行。
除此之外,在这里使用游标的任何特定原因而不仅仅是SELECT COUNT(*) FROM public."table"
?