Как вам уже сказали, varchar4
- неправильный тип данных (хотя, поскольку вы использовали правильные типы данных для других параметров, я думаю, это была просто опечатка).
Вы неправильно использовали concat
. Я бы предложил вам использовать оператор конкатенации Oracle ||
при работе с более чем двумя строками (как вы сделали), поэтому просто удалите concat
. Также вам не хватает закрывающей скобки (две открытые, одна закрытая).
Конец процедуры отсутствует.
Вот пример, который показывает, что вы можете искать. Посмотрите, поможет ли это.
SQL> create table tbl1 (col1 varchar2(20));
Table created.
SQL> create or replace procedure p_test
2 (p1 in varchar2, p2 in varchar2, p3 in varchar2, p4 in varchar2) as
3 begin
4 insert into tbl1(col1)
5 values(p1 || ' ' || p2 || ' ' || p3 || ' ' || p4);
6 end;
7 /
Procedure created.
SQL> exec p_test('Li', 'tt', 'le', 'foot');
PL/SQL procedure successfully completed.
SQL> select * From tbl1;
COL1
--------------------
Li tt le foot
SQL>