我正在使用Oracle 11g和ODP.NET,C#开发应用程序,而且我是Oracle存储过程的初学者。 我需要的是编写一个将从表中删除记录的存储函数。
假设函数fu_delete_user(p_user_id)从表Users中删除具有该id的用户。但是,可能由于约束,delete语句引发了异常。在这种情况下,我希望函数返回false,否则它应该返回true。
我该怎么写这个函数/从c#调用它? 谢谢!
答案 0 :(得分:3)
以下是代码的概念,在您的情况下使用函数会更好,因为它们被设计为始终返回值。
程序可以通过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;
希望它有所帮助...
答案 1 :(得分:1)
除非你能保证这只会在pl / sql中使用,否则你可能想让返回值成为一个数字(1 =真,0 =假)。 SQL不理解布尔值(此外,我的旧学校大脑用1和0来思考;)