2015-11-12 45 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程序,请使用集合类型的输入参数编写存储过程。