postgresql中的postgresql异常捕获或错误处理

postgresql中的postgresql异常捕获或错误处理,postgresql,Postgresql,在下面的代码中,我创建了示例表并编写了异常处理的存储过程,问题是如果我将整数值插入到它正在执行的“名称”和“电子邮件”列中。如果我为“名称”和“电子邮件”列传递整数值,它将抛出异常,指出传递的数据类型对“名称”和“电子邮件”列是错误的 有人能帮我吗 CREATE TABLE people ( id integer NOT NULL, name text, email text, CONSTRAINT people_pkey PRIMARY KEY (id) ) CREATE

在下面的代码中,我创建了示例表并编写了异常处理的存储过程,问题是如果我将整数值插入到它正在执行的“名称”和“电子邮件”列中。如果我为“名称”和“电子邮件”列传递整数值,它将抛出异常,指出传递的数据类型对“名称”和“电子邮件”列是错误的

有人能帮我吗

CREATE TABLE people
(
  id integer NOT NULL,
  name text,
  email text,
  CONSTRAINT people_pkey PRIMARY KEY (id)
)


CREATE OR REPLACE FUNCTION test() RETURNS integer AS'
BEGIN

BEGIN

INSERT INTO people(id,name,email) values(1,5,6);
EXCEPTION
WHEN OTHERS THEN RETURN -1;
END;

RETURN 1;

END'LANGUAGE plpgsql;


select * from test()


select * from people    

这是正常行为,与异常或错误处理无关

为SQL查询中的文本字段分配数值可以无缝地工作,因为PostgreSQL将隐式转换应用于数值文本(这也适用于几乎任何数据类型,因为它们都通过I/O转换例程具有文本表示)

这一点在文件中有所提及:

通常不需要在用户定义的 类型和标准字符串类型(text、varchar和char(n),如 以及定义为字符串中的用户定义类型 类别)。PostgreSQL为 那个对字符串类型的自动强制转换被视为赋值 强制转换,而字符串类型的自动强制转换只是显式的


开始。。。异常
块?你已经试过什么了?你已经做了哪些搜索/阅读?堆栈溢出不是“为我编写代码”网站。我已经尝试了下面的代码。如果插入数据中出现任何synatax错误,我可以打印1。如果插入数据中出现任何synatax错误,我应该打印-1创建或替换函数测试()将VARCHAR返回为“开始插入人(id、姓名、电子邮件)值(5、“h”、“l”);其他人结束时的例外情况;返回“1”;端语言plpgsql;好考虑何时返回
-1
。也许你应该在某处添加一个
RETURN-1
。。。