I then added , yet it still doesn't work.
2010/9/12 Tom Lane <t...@sss.pgh.pa.us> > sunpeng <blueva...@gmail.com> writes: > > First I use SPI_execute("update .... > > bool succ; > > SPI_connect(); > > int ret = SPI_execute("update ....where uid = 1", false, 1);//later > will > > add error processing > > if (ret == SPI_OK_UPDATE && SPI_processed == 1) { > > succ = true; > > } > > SPI_finish(); > > > Then I use SPI_execute("select .....where uid = 1", .... > > > SPI_connect(); > > int ret = SPI_execute("select .....where uid = 1", true, 1);//later > will > > add error processing > > if (ret == SPI_OK_SELECT && SPI_processed == 1) { > > HeapTuple tuple; > > tuple = SPI_tuptable->vals[0]; > > ... > > datum = > heap_getattr(tuple,attrno,SPI_tuptable->tupdesc,&isnull); > > .... > > } > > the datum doesn't change, why ? > > You're missing a CommandCounterIncrement() call between the two actions. > If you hadn't passed read_only = true to the second SPI_execute, it > would have done one for you. > > regards, tom lane >