我有一个更新一行的函数:
CREATE OR REPLACE FUNCTION MyTable_UPDATE
(
_ID int,
_Description text
)
RETURNS bool
AS $$
DECLARE _OK boolean;
BEGIN
_OK := false;
UPDATE mytable SET
Description = _Description
WHERE ID = _ID;
_OK := true;
RETURN _OK;
END;
$$ LANGUAGE plpgsql STRICT;
Run Code Online (Sandbox Code Playgroud)
当我用描述中的值调用它时,它可以工作:
select MyTable_UPDATE(9, 'testing 123');
Run Code Online (Sandbox Code Playgroud)
如果我用空值调用它,它不会更新,没有错误消息,也没有返回值:
select MyTable_UPDATE(9, null);
Run Code Online (Sandbox Code Playgroud)
如果我运行更新查询来设置 description = null,它会起作用:
UPDATE mytable SET
Description = null
WHERE ID = 9;
Run Code Online (Sandbox Code Playgroud)
Luc*_*c M 10
来自关于 CREATE FUNCTION 的 postgresql 文档
严格的
RETURNS NULL ON NULL INPUT 或 STRICT 表示只要它的任何参数为空,该函数总是返回空值。如果指定了该参数,则在有空参数时不执行该函数;相反,会自动假定为空结果。
简而言之,函数没有被执行。
您必须删除STRICT参数才能传递 NULL 值。
| 归档时间: |
|
| 查看次数: |
11878 次 |
| 最近记录: |