Sql PLS-00363输入参数,值分配

Sql PLS-00363输入参数,值分配,sql,plsql,Sql,Plsql,我无法将变量值作为输入参数添加到过程upd_用户 PROCEDURE reset_pass (in_row IN users%ROWTYPE) IS l_random_pass varchar2(4000); BEGIN SELECT DBMS_RANDOM.string('x',10) INTO l_random_pass FROM DUAL; in_row.password := l_random_pass; account_api.upd_users(

我无法将变量值作为输入参数添加到过程upd_用户

  PROCEDURE reset_pass (in_row IN users%ROWTYPE)
  IS
  l_random_pass varchar2(4000);
  BEGIN
  SELECT DBMS_RANDOM.string('x',10) INTO l_random_pass FROM DUAL;
  in_row.password  := l_random_pass;
  
  account_api.upd_users( table_row => in_row );
  END reset_pass;
当我尝试编写作业时,我得到
PLS-00363:表达式'in_row.password'不能用作作业目标

我无法为输入参数赋值,但过程upd_用户也有%ROWTYPE参数。 我不能再增加一个值了。call reset_pass中的另一个输入值应为用户id

编辑:upd_用户程序:

PROCEDURE upd_users (
    table_row    IN   users%rowtype
) IS
BEGIN     
    UPDATE users
    SET
        row = table_row
    WHERE
        id = table_row.id;         
END upd_users;

您应该将IN参数转换为IN OUT

 PROCEDURE reset_pass (in_row IN OUT users%ROWTYPE)
另一种方法是,在无法将本地记录对象修改为in-OUT时,获取该对象

PROCEDURE reset_pass (in_row IN users%ROWTYPE)
  IS
  l_random_pass varchar2(4000);
  in_row_local users%ROWTYPE;
  BEGIN
  in_row_local := in_row;
  SELECT DBMS_RANDOM.string('x',10) INTO l_random_pass FROM DUAL;
  in_row_local.password  := l_random_pass;
  
  account_api.upd_users( table_row => in_row_local );
  END reset_pass;

您应该将IN参数转换为IN OUT

 PROCEDURE reset_pass (in_row IN OUT users%ROWTYPE)
另一种方法是,在无法将本地记录对象修改为in-OUT时,获取该对象

PROCEDURE reset_pass (in_row IN users%ROWTYPE)
  IS
  l_random_pass varchar2(4000);
  in_row_local users%ROWTYPE;
  BEGIN
  in_row_local := in_row;
  SELECT DBMS_RANDOM.string('x',10) INTO l_random_pass FROM DUAL;
  in_row_local.password  := l_random_pass;
  
  account_api.upd_users( table_row => in_row_local );
  END reset_pass;

错误消息显示“in_rows”没有名为“in_rows”的变量。假设这是一个打字错误?还请编辑问题,并显示account_api.upd_usersI编辑代码的定义。当我复制代码时,这是一个错误。您的错误消息显示“in_rows”没有名为“in_rows”的变量。假设这是一个打字错误?还请编辑问题,并显示account_api.upd_usersI编辑代码的定义。当我复制代码时是一个错误,我尝试了这个方法,但是当我调用id作为参数的过程时,我得到:
PLS-00306:调用“RESET\u PASS”时参数的数量或类型错误。
尝试替代方法我尝试了这个方法,但当我调用id作为参数的过程时,我得到:
PLS-00306:调用“RESET\u PASS”时参数的数量或类型错误。
请尝试另一种方法