![](/img/trans.png)
[英]How to create a dropdown list for user input in sql, using sql developer?
[英]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';
可以编译-运行-很好。
综上所述,尽管这似乎是一种学习练习,但这不是最好的方法吗?
查找PROMPT
和ACCEPT
关键字..您可以在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.