作者psilotum (好小孩)
看板Database
标题[SQL ] 关於 postgresql stored procedure 的问题
时间Wed Nov 19 17:03:19 2008
大家好,以下有一个问题想要请教一下
1. DBMS 环境:
psql (PostgreSQL) 8.3.3
contains support for command-line editing
2. 想法:
Table 1 (其中,~ 为一些栏位,除了 ba 之外,所有栏位都有资料)
mapno tsuga ba
-------+ ~ +-----+-----------------
bigint int double precision
Table 2
mapno ba
-------+ ~ +-----------------+
bigint double precision
我想做的事情是,如果 Table 1 中 tsuga 的栏位是某个特定值,例如说 1 好了
就把 Table 2 中的 ba 值进行 log 计算後复制到 Table 1 中的 ba 栏位
3. 我的作法
1 CREATE FUNCTION updatenf2() RETURNS void AS $$
2 DECLARE
3 tsuga_ba double precision;
4
5 BEGIN
6 FOR tsuga_ba in SELECT log(ba) as ba from nf_sample_tsuga WHERE ba!=0 LOOP
7 UPDATE nf_releve SET ba=tsuga_ba WHERE tsuga=1;
8 END LOOP;
9 END;
10
11 $$ LANGUAGE plpgsql;
接下来 select updatenf2()
不过很奇怪的是,它似乎在 ba 栏位中的数字都一模一样,看了很久不知道问题在哪边
mapno | ~ | tsuga | ba
-------------+----+-------+----
95192108140 | ~ | 1 | 3.17974616415469
95192109015 | ~ | 1 | 3.17974616415469
95192113035 | ~ | 1 | 3.17974616415469
95192113041 | ~ | 1 | 3.17974616415469
95192113167 | ~ | 1 | 3.17974616415469
谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.82.16