在PL / SQL中要求用户输入

时间:2018-01-09 20:39:00

标签: oracle plsql

我是PL / SQL的新手,我被困在一些代码上。 我想向用户询问一个号码,然后我希望能够在IF THEN语句中使用此号码来验证该号码是否大于或小于20.

我坚持如何获取用户输入,一旦我拥有它,我可以存储它并将其返还给用户并验证其大于或小于20。

DECLARE 
a number(2) := 10; 
BEGIN 
a:= 10; 
-- check the boolean condition using if statement  
IF( a < 20 ) THEN 
  -- if condition is true then print the following   
  dbms_output.put_line('a is less than 20 ' ); 
END IF; 
dbms_output.put_line('value of a is : ' || a); 
END; 
/

2 个答案:

答案 0 :(得分:1)

在SQLPlus中,你会使用“&amp;”;在我的例子中,它是&amp;&amp;这样我就不必多次输入相同的值(即每次引用“a”):

SQL> begin
  2    if &&a < 20 then
  3      dbms_output.put_line('a is less than 20');
  4    end if;
  5    dbms_output.put_line('value of a is: ' || &&a);
  6  end;
  7  /
Enter value for a: 5
old   2:   if &&a < 20 then
new   2:   if 5 < 20 then
old   5:   dbms_output.put_line('value of a is: ' || &&a);
new   5:   dbms_output.put_line('value of a is: ' || 5);
a is less than 20
value of a is: 5

PL/SQL procedure successfully completed.

SQL>

尽管如此,我想说你宁愿使用IN参数创建一个过程,例如

SQL> create or replace procedure p_test (par_a in number) is
  2  begin
  3    if par_a < 20 then
  4       dbms_output.put_line('a is less than 20');
  5    end if;
  6    dbms_output.put_line('value of a is: ' || par_a);
  7  end;
  8  /

Procedure created.

SQL> exec p_test(15);
a is less than 20
value of a is: 15

PL/SQL procedure successfully completed.

SQL> exec p_test(34);
value of a is: 34

PL/SQL procedure successfully completed.

SQL>

答案 1 :(得分:1)

SQL> set serveroutput on; -- for "dbms_output.put_line" to take effect
SQL> DECLARE 
a number := &i_nr; -- there's no need to restrict a non-decimal numeric variable to a length
BEGIN 
--a:= 10; --no need this when initialization is in declaration section 
-- check the boolean condition using if statement  
IF( a < 20 ) THEN 
  -- if condition is true then print the following   
  dbms_output.put_line('a is less than 20 ' ); 
END IF; 
dbms_output.put_line('value of a is : ' || a); 
END; 
/
-- it prompts you for value of &i_nr "enter a numeric value, for example 10", for string values it must be in quotes '&i_str'