最近我一直在使用某些功能,这些功能正在起作用。 我想添加一些功能,例如:“ 如果函数输入参数是字符串,则会引发异常,说出一些东西” 。我该怎么办?
env.SConscript()
正如我之前所说,我想输入如下内容: 如果$ 1不为数字,则引发“错误类型的输入参数”
答案 0 :(得分:2)
我认为您不能使用Postgres做到这一点-否则您将无法避免一些副作用。
Postgres是严格的类型系统-因此,所有有关类型的工作都应由Postgres完成。
但是您可以重载某些类型参数的函数:
CREATE OR REPLACE FUNCTION public.f1(numeric)
RETURNS numeric
LANGUAGE plpgsql
AS $function$
begin
return $1;
end;
$function$
CREATE OR REPLACE FUNCTION public.f1(text)
RETURNS text
LANGUAGE plpgsql
AS $function$
begin
raise exception 'only numeric type is supported';
end;
$function$
postgres=# select f1(10);
+----+
| f1 |
+----+
| 10 |
+----+
(1 row)
postgres=# select f1('ahoj');
ERROR: only numeric type is supported
CONTEXT: PL/pgSQL function f1(text) line 3 at RAISE
但是强烈建议您不要使用此模式。重载是野性的枪-可以是好朋友,也可以是坏朋友,仅在需要时并且可以做一些工作时才应使用重载-不应仅将其用于引发异常。这对于postgres的类型系统是有用的-它可以更好地工作(尽管使用不同的视图,并且可能在第一时间看到奇怪的错误消息)。