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
。。。