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#调用它?谢谢你!

Oracle函数,在成功或失败时返回bool值

这是代码的一个想法,在您的情况下使用函数会更好,因为它们被设计为总是返回值。过程可以通过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;)