Oracle函数,在成功或失败时返回bool值
本文关键字:返回 bool 失败 函数 成功 Oracle | 更新日期: 2023-09-27 18:16:49
我正在使用Oracle 11g和ODP开发一个应用程序。. NET, c#,我是Oracle存储过程的初学者。我需要的是写一个存储函数,它将从表中删除记录。
假设function fu_delete_user(p_user_id)从Users表中删除具有该id的用户。但是,可能由于约束,delete语句抛出了一个异常。在本例中,我希望函数返回false,否则它应该返回true。
我应该如何写这个函数/从c#调用它?谢谢你!
这是代码的一个想法,在您的情况下使用函数会更好,因为它们被设计为总是返回值。过程可以通过OUT
参数返回值(如我给出的示例)。
使用函数:
CREATE OR REPLACE
FUNCTION p_delete_user (
p_user_id IN NUMBER
)
RETURN BOOLEAN
IS
BEGIN
DELETE FROM users
WHERE user_id = p_user_id;
--
RETURN true;
EXCEPTION
WHEN others
THEN
-- Log error
RETURN false;
END p_delete_user;
使用过程:
CREATE OR REPLACE
PROCEDURE p_delete_user (
p_user_id IN NUMBER,
p_success OUT BOOLEAN
)
IS
BEGIN
DELETE FROM users
WHERE user_id = p_user_id;
--
p_success := true;
EXCEPTION
WHEN others
THEN
-- Log error
p_success := false;
END p_delete_user;
除非您能保证这将只在pl/sql中使用,否则您可能希望将返回值设置为数字(1=true, 0=false)。SQL不理解布尔值(此外,我的老派大脑认为是1和0;)