我正在尝试找出传递给postgres函数的varchar参数的参数长度。
我刚才的SQL在character_maximum_length列中没有值,我希望找到这个值
SELECT *
FROM information_schema.parameters
WHERE specific_schema='public'
AND specific_name like 'foo'
ORDER BY ordinal_position
答案 0 :(得分:2)
我认为postgresql不保留这些信息。如果我create function foo(varchar(100)) returns boolean ...
然后使用pg_dump
转储架构,我会找到:
CREATE FUNCTION foo(character varying) RETURNS boolean
LANGUAGE sql
AS $$select true$$;
'100'规范消失了。并且将150个字符的字符串传递给foo(varchar)不会被困或任何东西。相比之下,如果我创建一个基于varchar(100)的域并根据其定义函数,那么传递一个超长字符串就会被捕获。