从功能postgresql输出到屏幕和文件记录

时间:2013-05-28 12:12:19

标签: sql linux postgresql solaris postgresql-8.4

有一个函数存根(我需要将它并行化,在一部分上为它分离输入数据,并在这些部分的数据不同的计算机上产生它)

-- Function: net_train(text[], integer)

-- DROP FUNCTION net_train(text[], integer);

CREATE OR REPLACE FUNCTION net_train(terms text[], perceptron_id integer)
  RETURNS void AS
$BODY$begin
-- stub
end;$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION net_train(text[], integer)
  OWNER TO postgres;
COMMENT ON FUNCTION net_train(text[], integer) IS 'Comment: Train the Kohonen Neural Network with input data
Params:
 text[] terms - array of terms, on which net is train
 int perceptron_id - ID of perceptron to be added

是否要检查它是否已被执行,有必要在其中插入一些操作,即我对2个问题的回答:

  1. 如何显示此功能的消息? (希望看到一个例子)
  2. 如果假设,在调用此函数之前/etc/perceptron_id.txt文件(此函数参数具有整数类型,在这种情况下,此数字的字符串表示意味着),如何从此函数实现添加此函数是否为每一行创建了一个terms text []输入数组的每个元素的文件(事先打开了上面的文件以添加行)? (希望看到一个例子)

1 个答案:

答案 0 :(得分:0)

我不太清楚你输出到屏幕的意思。这些函数将值返回给sql查询执行程序,而不是屏幕。您可以引发通知或返回包装程序随后可以显示在屏幕上的结果。类似的东西:

RAISE NOTICE 'Config file updated';

现在做一些像更新文件的事情,你可能想做类似的事情:

COPY perceptron(id) TO '/etc/percetron_id.txt' WITH csv;

否则你想使用包装函数。

请注意,这些事情不是事务性的。您无法回滚对数据库外部文件的写入,因此我建议让另一个程序提取结果并写入文件,而不是直接在后端执行此操作。 LISTENNOTIFY非常适合。