我有以下简单的代码用户定义的函数,要格式化字符串。
create or replace function func_format_usage(v1 integer, v2 varchar)
returns varchar as $$
declare
res1 varchar;
begin
-- error
res1 = execute format('input arguments is %I and %S', v1, v2) ;
-- also eror
res1 = format('input arguments is %I and %S', v1, v2);
return res1;
end
$$ language plpgsql;
select func_format_usage(10,'Ten')
无论我是否添加execute
来调用format
返回,它都会报告错误,报告格式有错误。
但是,可以运行select format
我想问问题出在哪里,谢谢!
1条答案
按热度按时间kknvjkwl1#
我假设这是一个语法练习。有两个问题:
execute
需要有效的SQL。它将生成一个运行时异常。%S
无效,应为%s
。就是这样,我用
text
代替了varchar
,text
在PostgreSQL中更常见。可以像这样使用
execute
到目前为止,这是一种过度的杀伤,没有多大意义。