Подтвердить что ты не робот

Что не так с этим PL/SQL? Bind Variable * НЕ ОБНАРУЖЕН

Вот:

declare
  v_str1   varchar2(80);
begin
  v_str1 := 'test';
  print :v_str1;
end

Когда я запускаю его с помощью SQLDeveloper только на листе sql, я получаю следующее:

Bind Variable "v_str1" is NOT DECLARED
anonymous block completed
4b9b3361

Ответ 1

Получил это:

set serveroutput on

declare
  v_str1   varchar2(80);    
begin
 v_str1 := 'test';
 dbms_output.put_line(v_str1);
end;

Подробнее здесь.

Ответ 2

Синтаксис переменных привязки формы: VARNAME используются в основном в SQL * Plus (за исключением переменных привязки для динамического SQL, я думаю). Для SQL * Developer, PL/SQL Developer или других приложений есть "&". для переменной подстановки:


declare
  v_str1   varchar2(80);
begin
  v_str1 := &v_str;
  print v_str1;
end

РЕДАКТИРОВАТЬ: Мой плохой, код для Oracle SQL * Разработчик должен был быть:


set serveroutput on;
declare
  v_str1   varchar2(80);
begin
  v_str1 := '&v_str';
  dbms_output.put_line(v_str1);
end;

Вам нужно выбрать все и выполнить его. Результат появится на панели "Script Output".

Ответ 3

print не является функцией PLSQL. Если вы хотите получить результат, вы можете использовать dbms_output.put_line(v_str1);

set serveroutput on;    
declare v_str1 varchar2(80);
begin
    v_str1 := 'test'; 
    dbms_output.put_line(v_str1);
end;

: v_str1 - это переменная связывания, но вы должны объявить не в PLSQL. Когда вы его объявляете, вы должны использовать ключевое слово VARIABLE.

Ответ 4

Try

declare
  v_str1   varchar2(80);
begin
  v_str1 := 'test';
  print v_str1;
end