2013-02-27 3 views
0

Почему это не работает ?:PLSQL Read Input

Declare 
type tablica is table of varchar2(30) 
index by binary_integer; 
tab tablica; 
i integer :=0; 
n integer :=0; 
inp integer:='&inp'; 
one varchar(20); 

Begin 
While n<3 Loop 

n:=n+1; 
tab(n):='&one'; 

End Loop; 

(....) 

Он должен читать 3times ввод с клавиатуры и поставить его в таблице символов - и это только для чтения 1 раз:/

ответ

0

Почему ты нужно использовать & в PL/SQL? Подстановка для SQL. Это будет работать:

Declare 
    type tablica is table of varchar2(30) index by binary_integer; 
    tab tablica; 
    i integer :=0; 
    n integer :=0; 
--inp integer:='&inp'; 
one varchar(20); 
Begin 
While n<3 Loop 
    n:=n+1; 

    If n = 1 Then 
    tab(n):='one'; 
    elsif 
    n = 2 Then 
    tab(n):='two'; 
    Else 
    tab(n):='three'; 
    End if; 

    dbms_output.put_line(n||chr(9)||tab(n)); 
End Loop; 
End; 
/

Вот некоторые хороший пример того, что вы можете: http://www.dba-oracle.com/concepts/pl_sql_while_loop.htm

+1

Здравствуйте, мне нужно положить несколько раз информации заключается в закладке (п), поэтому я использую и, но Loop работает, и он спрашивает меня только 1 раз для ввода и помещает его во все tab() - я думал: Step1: Loop -> введите мой вход из & inp в tab (1), Step2: Loop -> overwrite & inp with put мой новый вход и поместить его в вкладку (2) и так далее, но как только я помещу что-то в & inp, это не изменится – Dave

+0

@ user2107202 - В PL/SQL вы создаете процедуру/функцию с параметрами, а не с &. Затем вы запускаете процедуру и ставите значения вместо параметров. С вашим кодом процедура будет выполняться один раз и попросить ввести значение один раз. Затем он вернет значение, введенное вами 3 раза. Это то, что вы написали. Поместите реальные данные и требования в свой пример. – Art

+0

Привет, именно так. Может быть, кто-то пример, как сделать Loop для динамического ввода в переменные таблицы? – Dave