如何在Oracle 10g上的PL/SQL中显示用户输入的提示?

问题描述 投票:0回答:1

我正在 Oracle 10g 上用 PL/SQL 编写代码,需要用户输入。我想提示用户输入,但我无法这样做。如果能帮到你就太好了!

我尝试了以下代码,只是为了测试提示是否有效。但是,代码如果给出错误为

"ORA-00900: invalid SQL statement"
。你能告诉我哪里错了吗?

ACCEPT x NUMBER PROMPT 'Please enter a value';
DECLARE
  a NUMBER:=&x;
BEGIN
  dbms_output.put_line(a);
END;
/
database plsql oracle10g
1个回答
0
投票

PL/SQL 不允许用户输入。


ACCEPT
是一个在客户端上运行的 SQL*Plus 命令,它接受用户输入并将其存储在替换变量中。它在客户端上运行,并且在数据库上运行。

&x
是一个替换变量,SQL*Plus(以及其他支持替换变量的客户端)将采用替换变量的值,并有效地执行查找替换,以该变量替换其值。然后替换的文本被发送到数据库(数据库永远不会看到原始文本)。同样,数据库理解替换变量。

因此,如果您通过支持替换变量的客户端应用程序(SQL*Plus、SQL Developer、SQLCl 等)运行代码,那么您的代码将由客户端解析、替换并发送到数据库。

如果您在不同的客户端上运行(不支持替换变量),那么您的代码无效,因为

ACCEPT
不是 PL/SQL 命令(并且 PL/SQL 不支持接受用户输入)并且客户端将发送按原样将代码发送到数据库,数据库将无法理解它。

© www.soinside.com 2019 - 2024. All rights reserved.