我在oracle中创建数据库功能时遇到问题

时间:2020-01-16 19:43:36

标签: oracle function

我在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 个答案:

答案 0 :(得分:3)

在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>