У меня проблема с созданием функции моей базы данных в oracle - PullRequest
0 голосов
/ 16 января 2020

У меня проблема с функциями в oracle. Я пытаюсь добавить новую строку в существующую таблицу, но я не знаю, все ли время я двигаюсь в правильном направлении, у меня появляется ошибка. Функция работала в Postgresql и теперь хочет преобразовать ее в Oracle.

Функция:

CREATE OR REPLACE FUNCTION add_human(
   first_name VARCHAR(15),
   last_name VARCHAR (15), 
   birthday DATE, 
   pesel BIGINT, 
   employee_function(VARCHAR(15))
RETURNS void AS 
$$ BEGIN 
  INSERT INTO WORKERS(first_name, last_name, birthday, pesel, employee_function) 
  VALUES ($1, $2, $3, $4, $5); END; $$ LANGUAGE  plpgsql;

Выбрать:

select add_human(‘John’,’Wick’,’1971-01-27’,’71012745639’,’Actor’);

1 Ответ

3 голосов
/ 16 января 2020

В Oracle вы бы использовали процедуру для вставки строк в таблицу, а не функцию (они должны использоваться для возврата определенного значения).

Это было бы что-то вроде этого:

SQL> CREATE OR REPLACE PROCEDURE add_human
  2    (
  3     p_first_name        in VARCHAR2,
  4     p_last_name         in VARCHAR2,
  5     p_birthday          in DATE,
  6     p_pesel             in NUMBER,
  7     p_employee_function in VARCHAR2
  8    )
  9  AS
 10  BEGIN
 11    INSERT INTO WORKERS
 12      (first_name, last_name, birthday, pesel, employee_function)
 13    VALUES (p_first_name, p_last_name, p_birthday, p_pesel, p_employee_function);
 14  END add_human;
 15  /

Procedure created.

SQL> BEGIN
  2    add_human('John', 'Wick', date '1971-01-27', 71012745639, 'Actor');
  3  END;
  4  /

PL/SQL procedure successfully completed.

SQL> SELECT * FROM workers;

FIRST_NAME LAST_NAME  BIRTHDAY            PESEL EMPLOYEE_F
---------- ---------- ---------- -------------- ----------
John       Wick       1971-01-27    71012745639 Actor

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