繁体   English   中英

使用SQL Developer在PL / SQL中输出用户输入

[英]Output user input in PL/SQL using SQL developer

大家好,我是PL / SQL的新手,但是我编写了一个小代码,提示用户输入2个数字并使用DBMS_output.Put_line显示数字。 但是我得到一个编译错误,下面是我的代码,我正在使用“ Oracle SQL Developer”

SET SERVEROUTPUT ON SIZE 1000000;

DECLARE n_no_1 number(8,2); n_no_2 number(8,2); BEGIN

DBMS_output.put_line('Enter Value for no 1'); &n_no_1; DBMS_output.put_line('Enter value for no 2'); &n_no_2;

DBMS_OUTPUT.PUT_LINE('The value of No 1 is' || n_no_1 );

DBMS_OUTPUT.PUT_LINE('The value of No 2 is' || n_no_2 );

END;

/

这两条线是您的问题,但是,不是出于其他答案中提到的原因:

&n_no_1;

&n_no_2;

在SQL中,可以使用&符号来触发称为“宏替换”的操作。

当编译器遇到类似这样的内容(即&n_no1 )时,它会提示用户输入一个值以替换它。

因此,如果您输入“ Hello”。 您的代码变为:

DBMS_output.put_line('Enter Value for no 1');
Hello;

如您所见,如果您刚刚输入,那将会失败。

您要做的就是将该值分配给变量,如下所示:

n_no_1 := '&n_no_1';

这被“替换”:

n_no_1 := 'Hello';

可以编译-运行-很好。

综上所述,尽管这似乎是一种学习练习,但这不是最好的方法吗?

查找PROMPTACCEPT关键字..您可以在SQL中使用它们(在BEGIN / DECLARE / END块之外)以更简洁的方式首先捕获值:)

http://docs.oracle.com/cd/E11882_01/server.112/e16604/ch_twelve032.htm#SQPUG052

http://docs.oracle.com/cd/E11882_01/server.112/e16604/ch_twelve005.htm#SQPUG026

在这里找到了一个值得一读的附加链接。 解释的内容比您正在看的要多得多,但它讨论了替换变量和其他类似的东西(以及其他一些不相关的东西:))

https://blogs.oracle.com/opal/entry/sqlplus_101_substitution_varia

&variable语法不是PL / SQL:它是SQL Developer的一部分。 我看到了您正在尝试做的事情以及语法错误,但是没有必要纠正它们,因为它最终将无法工作。

原因是:您不能在运行时通过PL / SQL接受用户输入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM