2015-11-12 84 views
0

我一直在使用基本的pl/sql和需要解決方案的簡單方案。將值插入到由用戶輸入值的表格中。將值多次傳遞給pl/sql循環中的變量

我想出了下面的代碼,但它只是要求用戶輸入一次值,併爲所有時間循環運行插入相同的值。相反,我希望它要求用戶在每個循環迭代中輸入一些值。請建議正確的方法來做到這一點。這裏是我的代碼:

declare 
    n number(2) := &n; 
    a abc.id%type; 
    b abc.name%type; 
    i number(2); 
begin 
    for i in 1..n 
    loop 
    a := &a; 
    b := &b; 
    insert into abc values(a,b); 
    end loop; 
end; 

這裏是表:abc(id, name)

回答

1

PL/SQL不是一個交互的語言。它沒有提示用戶或接受迴應的概念。

此語法?

a := &a; 
b := &b; 

它是SQL * Plus,它面向用戶的客戶端。它在SQL * Plus中運行匿名PL/SQL塊時有效,但如果要將代碼轉換爲存儲過程則會失敗。

解決方案是爲手頭的任務選擇接近技術。如果您需要的是交互式用戶體驗,請使用適當的UI語言編寫程序;使用APEX來保持它的PL/SQL。如果您需要將多個值傳遞給自治的PL/SQL程序,請使用集合類型的輸入參數編寫存儲過程。