Как выполнить хранимую процедуру UPDATE с% ROWTYPE - PullRequest
0 голосов
/ 04 мая 2020

Как выполнить c обновить хранимую процедуру с% rowtype

PROCEDURE p_update (
    p_id     IN   t.id%TYPE,
    p_row    IN   t%rowtype) 
IS
BEGIN
    UPDATE t
    SET
        row = p_row
    WHERE
        id = p_id; 
END p_update;

declare 
t_row   t%rowtype;
t_id    t.id%type;
begin
t_row.name := 'TEST';
t_id := 10;
pck_api.p_update(t_row, t_id);
end;

Я получил PLS-00306 неправильное число или типы аргументов

1 Ответ

0 голосов
/ 04 мая 2020

Вам просто нужно добавить столбец name к параметру вашего типа строки (p_row) p_row.name в обновлении вашей хранимой процедуры p_update и изменить порядок аргументов при вызове хранимой процедуры:

CREATE OR REPLACE PROCEDURE p_update (
    p_id     IN   t.id%TYPE,
    p_row    IN   t%rowtype) 
IS
BEGIN
  update t set name = p_row.name where id=p_id;
END;
/


Declare 
 t_row   t%rowtype;
 t_id    t.id%type;
Begin
 t_row.name := 'Test';
 t_id := 10;
 p_update(t_id,t_row);
End;
/

Демо

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