Postgresql 解析PgAttribute和Where条件子句 我想做的是:
模块化函数查询我指定的任何表的时间范围(pg_属性作为字符串输入)Postgresql 解析PgAttribute和Where条件子句 我想做的是:,postgresql,Postgresql,模块化函数查询我指定的任何表的时间范围(pg_属性作为字符串输入) 在调用::regclass之后,在where子句中将多个条件链接为函数输入 在链接的where子句中引用attrelid=\u tablename::regclass CREATE OR REPLACE FUNCTION the_func( rngstart timestamptz, rngdend timestamptz, _tablename VARCHAR(16), _id INT ) AS $$
CREATE OR REPLACE FUNCTION the_func(
rngstart timestamptz,
rngdend timestamptz,
_tablename VARCHAR(16),
_id INT
) AS $$
SELECT *
FROM pg_attribute
WHERE attrelid = _tablename::regclass
AND id = _id
AND time > rngstart
AND time <= rngend
$$ LANGUAGE sql STABLE;
创建或替换函数\u func(
rngstart-TZ,
rngdend时间戳,
_表名VARCHAR(16),
_id INT
)作为$$
挑选*
从pg_属性
其中attrelid=\u tablename::regclass
和id=\u id
和时间>rngstart
时间您必须编写PL/pgSQL函数并使用动态SQL,这与
BEGIN
RETURN QUERY EXECUTE format(
'SELECT ... FROM %I '
'WHERE id = $1 '
'AND time > $2 AND time <= $3',
_tablename::text)
USING _id, rngstart, rngend;
END;
开始
返回查询执行格式(
'从%I中选择…'
'其中id=$1'
'和时间>$2和时间您是否已经知道表及其列的名称?理想情况下,这可以用于多个表,但每个表都有相同的列名