我编写了以下函数,该函数返回另一个表中的记录" parameters_ltree_ {time_created}'其中time_created是historical_ltree表中的一列。
CREATE OF REPLAE function get_my_path(date_string text, path_arg ltree) RETURNS SETOF ltree AS
$BODY$
DECLARE
p text;
d text;
BEGIN
d := quote_ident(date_string);
p := 'parameters_ltree_';
RETURN QUERY EXECUTE format(
'SELECT path from %I' || '%I
WHERE path = %I
ORDER BY path
LIMIT 1'
, p, date_string, path_arg);
END
$BODY$
LANGUAGE plpgsql;
SELECT id, path, get_my_path(to_char(time_created, 'YYYYMMDD')), path) from historical_ltree
该函数编译但当我在底部运行SELECT查询时会抛出语法错误:
ERROR: relation "parameters_ltree_" does not exist
LINE 1: SELECT path FROM parameters_ltree_"20161201"
^
我已经尝试了许多不同的方法来使串联正常工作但无济于事,包括将date_string作为数字传递。
答案 0 :(得分:0)
尝试改为:
RETURN QUERY EXECUTE format(
'SELECT path from %I
WHERE path = %L
ORDER BY path
LIMIT 1'
, 'parameters_ltree_'||date_string, path_arg);
https://www.postgresql.org/docs/current/static/functions-string.html
将参数值格式化为简单字符串。空值是 被视为空字符串。
我将参数值视为SQL标识符,如果是,则对其进行双引号 必要。该值为null是错误的(相当于 quote_ident)。
L引用参数值作为SQL文字。空值是 显示为字符串NULL,不带引号(相当于 quote_nullable)。
答案 1 :(得分:0)
你可以试试这个
"awesomeTypescriptLoaderOptions": {
"useCache": true,
"transpileOnly": true
}