User interface 从用户获取2个输入并在PLSQL中调用过程

User interface 从用户获取2个输入并在PLSQL中调用过程,user-interface,plsql,oracle-sqldeveloper,procedure,User Interface,Plsql,Oracle Sqldeveloper,Procedure,嘿,我正在尝试调用一个过程,该过程包含两个参数,并且这两个参数都应该从用户处获取。因此,我提出了这段代码,但它不起作用。我正在与SQL Developer合作 create or replace procedure upd( x in binary_double , y in char) as res binary_double; begin dbms_output.put_line('Hello World'); end; /*User input and calling of func

嘿,我正在尝试调用一个过程,该过程包含两个参数,并且这两个参数都应该从用户处获取。因此,我提出了这段代码,但它不起作用。我正在与SQL Developer合作

create or replace procedure upd( x in binary_double , y in char) as
res binary_double;
begin
  dbms_output.put_line('Hello World');
end;

/*User input and calling of function*/
accept X binary_double prompt 'Enter percentage X (lower case)';
accept Y char(2) prompt 'Enter product type (lower case)';
call upd(&X, &Y);
在两次提示输入后,会出现以下错误

如果我像这样调用调用upd&X,它工作得很顺利,但是如果我用上面的方式调用它,它会失败得很惨。所以问题是为什么会发生这种情况,以及如何摆脱它

首先,不允许您指定字符长度,只是一种SQL*Plus样式格式,因此提示应该是:

accept Y char format a2 prompt 'Enter product type (lower case): '
我更喜欢在每个提示的结尾加上冒号和空格,因为这样可以让输入值的人更清楚,但这取决于您

其次,您需要引用字符串值。试试这个:

call upd(&X, '&Y')
call upd(&X, '&Y')