Plsql PL/SQL中的DECLARE部分中未初始化的变量会发生什么情况?

Plsql PL/SQL中的DECLARE部分中未初始化的变量会发生什么情况?,plsql,Plsql,我不熟悉oracle PL/SQL set serveroutput on; declare a NUMBER(10,2); begin DBMS_OUTPUT.PUT_LINE(a); end ; 上面的代码已编译,但现在我想知道变量a存储的值是什么,是NULL还是空的?初始值为NULL: 因为标量变量的默认初始值为NULL 上面的答案是正确的,但如果你想证明这一点,你可以做如下的事情 set serveroutput on; declare a NUMBER(10,2); beg

我不熟悉oracle PL/SQL

set serveroutput on;
declare 
a NUMBER(10,2);

begin 
DBMS_OUTPUT.PUT_LINE(a);
end ;
上面的代码已编译,但现在我想知道变量a存储的值是什么,是NULL还是空的?

初始值为NULL:

因为标量变量的默认初始值为NULL


上面的答案是正确的,但如果你想证明这一点,你可以做如下的事情

set serveroutput on;
declare 
a NUMBER(10,2);

begin 
  DBMS_OUTPUT.PUT_LINE(case when a is null then 'It is null' else 'It is not null' end);
end ;

通过这种方式,您可以看到它打印为null,然后您可以将a设置为任何其他值,您将看到它不是null。

它将是null。你应该能够轻松地证明这一点。没有空数字这样的东西。您可以哄骗Oracle RDBMS区分空字符串和零长度字符串,但如果我是您,我不会这么做。