2013-02-27 97 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