PL/SQL Developer 11.0.0.1762 - 如何在 SQL Window 和 运行 中逐行编写简单的脚本以进行测试?

PL/SQL Developer 11.0.0.1762 - how to write simple script line by line in SQL Window and run them for test purpose?

T-SQL :

declare @var1 varchar(30), @var2 varchar(30);

select @var1 = null, @var2='';

select isnull(@var1, 'aa') as var1, isnull(@var2, 'aa') as var2; 

PL/SQL : (以下不起作用,尽管它看起来应该起作用)

DECLARE var1 varchar(30):= '', var2 varchar(30):= null;
select nvl(var1, 'A value') var1, nvl(var2, 'A value') as var2 from dual;

首先它抱怨逗号,然后它抱怨文件结尾。
所以我一直摸索和翻滚,直到找到 this answer ,这是我完全没有想到的。

查看我的回答以结束你的挫败感。

以上是我的版本。试着写这样的东西(比如在 T-SQL 中)来测试他们的 NVL 函数,但我不断从开发人员的 IDE 中收到意外的错误对话框。

答案是RIGHT HERE。但是我注释掉了 "SET SERVEROUTPUT ON" 因为在我的环境中它不起作用。毕竟,以下是有效的。您可以将其复制并粘贴到您的 SQL window of PLSQL Developer 中,然后根据需要进行修改。希望我的挫折能成为你的帮助。

--set serveroutput on;
DECLARE var1 varchar(30):= ''; var2 varchar(30):= null;
BEGIN
   dbms_output.put_line(nvl(var1, 'A value'));
   dbms_output.put_line(nvl(var2, 'A value'));
END;

我没想到如果你需要声明变量会占用这么多行(而不是 2 行)。或者你可以这样做,

select NVL('', 'something') s1, NVL(null, 'something') s2 from DUAL

p.s。顺便说一句,Oracle 的 NVL( , ) 比 T-SQL 的 IsNull( , ) 更好,因为它也处理空的 '' 情况。