RAISE EXCEPTION语句的基本语法如下: sql RAISE EXCEPTION 'error_message' [, 'detail_message' [, 'hint_message' [, 'errcode' ]]] USING option = value [, ...]; error_message:必需的异常消息。 detail_message:可选的详细消息,提供额外的异常信息。 hint_message:可选的建议消息,提供解决问题的建议...
其中EXCEPTION会产生错误,中断程序执行,错误如果不被捕获会被抛到上一层。 抛出指定类型的异常 方式一:RAISE SQLSTATE 方式二:RAISE condition_name 方式三:RAISE 'text' USING ERRCODE = 'unique_violation' 抛出异常的实例展示 文本拼接 代码语言:javascript 代码运行次数:0 运行 AI代码解释 do $g$ DECLARE v...
postgres=# CREATE OR REPLACE FUNCTION f26() RETURNS VOID AS postgres-# $$ postgres$# BEGIN postgres$# IF random()>0.99 THEN postgres$# RAISE NOTICE '随机数大于0.99'; postgres$# ELSE postgres$# RAISE NOTICE '随机数小于或等于0.99'; postgres$# END IF; postgres$# END; postgres$# $$ post...
RAISE EXCEPTION ’Nonexistent ID --> %’, user_id USING HINT = ’Please check your user ID’; 下面两个例子显示设置SQLSTATE等效方法: RAISE ’Duplicate user ID: %’, user_id USING ERRCODE = ’unique_violation’; RAISE ’Duplicate user ID: %’, user_id USING ERRCODE = ’23505’; 还有...
postgres$#RAISE EXCEPTION' 程序EXCEPTION 'USING ERRCODE='23505'; postgres$#END; postgres$#$$ postgres-# LANGUAGE plpgsql; CREATE FUNCTION postgres=# SELECT f28(); ERROR: 程序EXCEPTION 日志中会记录这个 ERRCODE。 2017-10-0318:40:16.710 CST,"pgxz","postgres",15072,"[local]",59d33b65.3ae0,...
3.16.3 RAISE EXCEPTION 自定义ERRCODE postgres=# CREATE OR REPLACE FUNCTION f28() RETURNS VOID AS postgres-# $$ postgres$# DECLARE postgres$# v_int INTEGER := 1; postgres$# BEGIN postgres$# RAISE EXCEPTION ' 程序EXCEPTION ' USING ERRCODE = '23505'; ...
ERRCODE,指定一个错误码(SQLSTATE)。可以是文档中的条件名称或者五个字符组成的 SQLSTATE 代码。 COLUMN、CONSTRAINT、DATATYPE、TABLE、SCHEMA,返回相关对象的名称。 以下是一些示例: RAISE EXCEPTION 'Nonexistent ID --> %', user_id USING HINT = 'Please check your user ID'; RAISE 'Duplicate user ID: ...
RAISE EXCEPTION ’Nonexistent ID--> %’, user_idUSINGHINT=’PleasecheckyouruserID’; These two examples show equivalent ways of setting the SQLSTATE: RAISE ’DuplicateuserID:%’, user_idUSINGERRCODE=’unique_violation’; RAISE ’DuplicateuserID:%’, user_idUSINGERRCODE=’23505’; ...
postgres=#DO$$postgres$#DECLAREpostgres$#nametext;postgres$#BEGINpostgres$#name:='PL/pgSQL';postgres$#RAISENOTICE'Hello %!',name;postgres$#END$$;NOTICE:HelloPL/pgSQL! 嵌套子块 PL/pgSQL 支持代码块的嵌套,也就是将一个代码块嵌入其他代码块的主体中。被嵌套的代码块被称为子块(subblock),包含子...
上述PL执行时会在exec_stmt_raise函数中调用plpgsql_recognize_err_condition获取SQLSTATE,函数可以接收错误码或错误类型。 例如上述PL在执行时调用plpgsql_recognize_err_condition的传参: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 // raise notice 'Duplicate user ID: %', user_id using errcode = ...