我在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’);
答案 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>