我试图使用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。我是否可以使用npgsql获得与PgAdmin相同的受影响的行数?
发布于 2016-04-02 10:18:32
这可能是因为您试图获取多语句命令的受影响行计数--您的第一条语句创建了游标,而第二条语句实际上移动了它(尽管我不确定“受影响的行”在移动游标(而不是抓取)时意味着什么)。尝试用两个不同的命令发送语句,并获得第二个受影响的行。
撇开这一切不说,在这里使用游标而不仅仅是做SELECT COUNT(*) FROM public."table"的任何特殊原因
https://stackoverflow.com/questions/35058348
复制相似问题