Функция Oracle, которая возвращает значение bool в случае успеха или неудачи - PullRequest
0 голосов
/ 06 декабря 2011

Я занимаюсь разработкой приложения с использованием Oracle 11g и ODP.NET, C #, и я новичок в хранимых процедурах Oracle. Мне нужно написать хранимую функцию, которая удалит запись из таблицы.

Скажем, функция fu_delete_user (p_user_id), которая удаляет пользователя с таким идентификатором из таблицы Users. Но, возможно, из-за ограничения, оператор delete выдает исключение. В этом случае я хочу, чтобы функция возвращала false, иначе она должна возвращать true.

Как мне написать эту функцию / вызвать ее из c #? Спасибо!

Ответы [ 2 ]

3 голосов
/ 06 декабря 2011

Вот идея кода, в вашем случае было бы лучше использовать функцию, так как они рассчитаны на то, чтобы всегда возвращать значение. Процедуры могут возвращать значения через 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 голос
/ 06 декабря 2011

Если вы не можете гарантировать, что это будет использоваться только в пределах pl / sql, тогда вы можете захотеть сделать возвращаемое значение числом (1 = true, 0 = false).SQL не понимает логическое значение (кроме того, мой мозг старой школы мыслит в терминах 1 и 0;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...