Как сохранить значение входного параметра пользователя в отдельной таблице в PLSQL - PullRequest
0 голосов
/ 30 марта 2020

У меня есть хранимая процедура, которая предлагает пользователю ввести четыре параметра, и мне нужно сохранить значения этих параметров в одном столбце в другой таблице.

create procedure test (p1 in varchar2, p2 in varchar2, p3 in varchar2, p4 in varchar4) as
begin

insert into tbl1(col1)
values(concat(p1 || ' ' || p2 || ' ' || p3 || ' ' || p4);

Я столкнулся с ошибкой ORA-00984: столбец здесь не разрешен.

1 Ответ

0 голосов
/ 31 марта 2020

Как вам уже сказали, 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...