ams*_*ams 13 postgresql stored-procedures exists plpgsql
我在postgres中编写存储过程,我需要检查是否存在行,然后相应地执行操作.沿线的东西.
IF SELECT * FROM foo WHERE x = 'abc' AND y = 'xyz' THEN
-- do something here
ELSE
-- do something else
END;
Run Code Online (Sandbox Code Playgroud)
我谷歌搜索了一下,但没有得到很好的点击.
Erw*_*ter 21
甚至更简单EXISTS:
IF EXISTS (SELECT 1 FROM foo WHERE x = 'abc' AND y = 'xyz') THEN
....
END IF;
Run Code Online (Sandbox Code Playgroud)
Cra*_*ger 17
PERFORM * FROM foo WHERE x = 'abc' AND y = 'xyz';
IF FOUND THEN
....
END IF;
Run Code Online (Sandbox Code Playgroud)
如果返回一行或多行,则会成功.如果要将结果限制为恰好一行用于GET DIAGNOSTICS获取行计数,或者用于将行SELECT INTO存储count(...)到DECLAREd变量中,则测试.如果没有结果是错误,请使用SELECT INTO STRICT要求只获取一行并存储到目标变量中.
做这样的事情时要小心并发问题.如果您正在尝试编写upsert/merge函数,则此方法将无效.请参阅"为什么这么复杂".
| 归档时间: |
|
| 查看次数: |
16078 次 |
| 最近记录: |