Sql PLS-00363输入参数,值分配
我无法将变量值作为输入参数添加到过程upd_用户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(
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”时参数的数量或类型错误。
请尝试另一种方法