作者psilotum (好小孩)
看板Database
标题Re: [SQL ] 关於 postgresql stored procedure 的问题
时间Wed Nov 19 17:54:55 2008
自问自答
原来是我想错了... mapno 是一样的,所以我就用以下的方法
1 CREATE FUNCTION updatenf2() RETURNS void AS $$
2 DECLARE
3 tsuga_ba double precision;
4 mapno_id bigint;
5
6 BEGIN
7 FOR tsuga_ba,mapno_id in SELECT log(ba) AS ba,mapno FROM nf_sample_tsuga WHERE ba!=0 LOOP
8 UPDATE nf_releve SET ba=tsuga_ba WHERE nf_releve.mapno=mapno_id;
9 END LOOP;
10 END;
11
12 $$ LANGUAGE plpgsql;
谢谢
※ 引述《psilotum (好小孩)》之铭言:
: 大家好,以下有一个问题想要请教一下
: 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