从用户那里获取 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

创建一个搜索表单,该表单将从用户那里获取输入并显示视频弹出窗口

如何从用户那里获取多行输入[重复]