2013-02-27 92 views
0

这是为什么不工作?:PLSQL读输入

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; 

(....) 

应该从键盘读取输入3次,并把它转换成char表 - 它只读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

您好,我需要把几次的信息是到标签(N),所以我用的是和,但循环正在运行,它只是要求我输入一次,并将其放在所有tab()中 - 我认为:第一步:循环 - >将输入从&inp放入选项卡(1),第二步:循环 - >覆盖并放入inp我的新输入并将其放入tab(2)等,但是一旦我将某些内容放入&inp,它将不会更改 – Dave 2013-02-27 13:30:43

+0

@ user2107202 - 在PL/SQL中,您使用参数创建过程/函数,而不是使用&。然后运行该过程并将值代入参数。使用你的代码,程序将运行一次并要求你输入一次值。然后它会返回你输入3次的值。这是你写的。把真实的数据和要求放在你的例子中。 – Art 2013-02-27 13:43:29

+0

你好,这发生了。或许有人可以举一个例子来说明如何让Loop将动态输入放入表变量中? – Dave 2013-02-27 14:24:26