从用户那里获取 2 个输入并在 PLSQL 中调用过程
Posted
技术标签:
【中文标题】从用户那里获取 2 个输入并在 PLSQL 中调用过程【英文标题】:Taking 2 inputs from user and calling procedure in PLSQL 【发布时间】:2017-01-27 11:05:34 【问题描述】:嘿,我正在尝试调用一个带有两个参数的过程,并且它们都应该从用户那里获取。所以我想出了这个不起作用的代码。(我正在使用 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);
提示两次输入后出现以下错误
old:call upd(&X, &Y)
new:call upd(12, a)
Error starting at line 69 in command:
call upd(&X, &Y)
Error report:
SQL Error: ORA-06576: not a valid function or procedure name
06576. 00000 - "not a valid function or procedure name"
*Cause: Could not find a function (if an INTO clause was present) or
a procedure (if the statement did not have an INTO clause) to
call.
*Action: Change the statement to invoke a function or procedure
如果我将这样的过程称为“调用 upd(&X,'a')”,它可以顺利运行,但如果我以上述方式调用它,它会惨遭失败。所以问题是为什么会发生这种情况以及如何摆脱它?
【问题讨论】:
【参考方案1】:首先accept
不允许你指定字符长度,只是一种SQL*Plus风格的格式,所以提示应该是:
accept Y char format a2 prompt 'Enter product type (lower case): '
(我更喜欢以冒号和空格结束每个提示,因为这样可以让输入值的人更清楚,但这取决于你。)
其次,您需要引用字符串值。试试这个:
call upd(&X, '&Y')
【讨论】:
以上是关于从用户那里获取 2 个输入并在 PLSQL 中调用过程的主要内容,如果未能解决你的问题,请参考以下文章
使用一个视图控制器从用户那里获取文本,将该值添加到数据库并在另一个 VC 中显示它[关闭]
我正在编写一个代码,该代码从用户那里获取公司中五个项目的数量输入
从 python 脚本调用 python 脚本,提供输入和获取输出,PyQt5,GUI