写个存储过程就行了create procedure yourfun() returning int define aaa like abctable.flag; select flag into aaa from abctable where id = 001; update abctable set flag = flag +1 where id = 001; return aaa ; end procedure ; in your .ec program using: Exec SQL execute procedure yourfun() into :aaa;
to 若水三千,我所想要做的只不过是在不被打断的情况下作两件事情而已,很希奇吗?按说你应该学过操作系统,你知道互斥的最简单的方法就是硬件有单一指令支持。正如一劍飄香所说,sql server就支持这样的语句,只不过我用的是informix罢了。 to when 我只能用sql不能用存储过程,很遗憾还有其他什么办法吗? To 一劍飄香 其实我并不在意得到的是之前还是之后的值,只要能够实现类似的就行了。
^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^
end procedure ;
in your .ec program using:
Exec SQL execute procedure yourfun() into :aaa;
to when 我只能用sql不能用存储过程,很遗憾还有其他什么办法吗?
To 一劍飄香 其实我并不在意得到的是之前还是之后的值,只要能够实现类似的就行了。
1、informix有触发器吗?有就可在update时将值返回;和上面的存储过程差不多
2、执行两条语句总可以吧,一起发过去执行!(它们顺序执行,应当不会有其他人的语句插入)