PL / SQL Developer 11.0.0.1762 - как написать простой скрипт построчно в окне SQL и запустить его для целей тестирования? - PullRequest
0 голосов
/ 14 октября 2019

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;

Сначала он пожаловался на запятую,затем он жаловался на конец файла.
Так что я продолжал шарить и рушиться, пока не нашел этот ответ , которого я совершенно не ожидал.

См. Мой ответ, чтобы покончить с вашим разочарованием.

enter image description here

Выше приведена версия, которая у меня есть. Попробуйте написать что-то вроде этого (например, в T-SQL), чтобы протестировать их функцию NVL, но я продолжал получать диалоговое окно с неожиданной ошибкой из IDE разработчика.

1 Ответ

0 голосов
/ 14 октября 2019

Ответ ПРЯМО ЗДЕСЬ . Но я прокомментировал «SET SERVEROUTPUT ON», потому что в моей среде это не работает. В конце концов, следующее работает. Вы можете скопировать и вставить это в свое окно SQL 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

ps. Кстати, NVL (,) в Oracle лучше, чем IsNull (,) в T-SQL, поскольку она также решает пустую '' ситуацию.

...