我有这个函数
/*
@Function: valiDates [Avoid inserting data from invalid dates]
@Purpose: Providing a _TABLE and a date _COLUMN to be validated.
Given a _DATE (from script name) validate that a certain % of data (_TOLERANCE) belongs to the _INTERVAL of days specified.
*/
CREATE OR REPLACE FUNCTION valiDates(_date date, _table regclass, _column text, _interval integer, _tolerance real) RETURNS BOOLEAN AS
$$
DECLARE result boolean;
BEGIN
EXECUTE 'SELECT
(SELECT count(*) FROM ' || _table::regclass || '
WHERE ' || _column || ' BETWEEN '''|| _date || '''::date and ''' || _date || '''::date + INTERVAL ''' || _interval || 'days'')'
|| '/
(SELECT COUNT(*) FROM ' || _table::regclass || ')::real
> ' || _tolerance
INTO result;
RETURN result;
END
;
$$ LANGUAGE plpgsql;它实际上在我的PostgreSQL环境版本9.1.13中工作,但当我试图在开发服务器(PostgreSQL 8.2)上调用这个函数时,出现以下错误:
array value must start with "{" or dimension information
它应该像官方documentation page中描述的那样在8.2版本上工作。
这就是我调用函数的方式:
select valiDates('2015-03-01','_table','_date',1,0.8);我真的不知道如何修复它,我已经尝试过用'_table'::regclass调用函数,但也不起作用。
发布于 2015-03-26 02:01:19
谢谢你Erwin的建议,我接受了大部分的建议。最后,我意识到,由于_table参数(regclass类型),它需要一个数组,我只需要更改它或一个字符串(text)。
https://stackoverflow.com/questions/29169815
复制相似问题