Oracle包中的自动增量

jac*_*ack 2 oracle package auto-increment

我试图在我的包装上使用自动增量而不使用触发器..有人可以解释我如何在我的包中使用它...我这样做没有工作它的抱怨abt变量未被声明或类型未分配..我看到了其他自动增量问题,但没有人使用自动增量没有触发包

 PROCEDURE insertExample   (  
user_id_in IN sample.seq_user_id.nextval,   
name_in IN sample.name%TYPE,     
age_in IN sample.age%TYPE   )   
IS    
BEGIN      
INSERT INTO sample    
 (seq_user_id.nextval, name, age)     
VALUES     
(user_id_in, name_in, age_in);    
END insertExample; 
Run Code Online (Sandbox Code Playgroud)

Cra*_*aig 6

您是否希望允许传入自定义user_id或始终使用序列?

在第一种情况下,您需要以下内容:

CREATE OR REPLACE PROCEDURE insertexample (
   user_id_in   in   sample.user_id%type,
   name_in      in   sample.name%type,
   age_in       in   sample.age%type
)
IS
BEGIN
   insert into sample
               (user_id, name, age
               )
        values (nvl(user_id_in, seq_user_id.nextval), name_in, age_in);
END insertexample; 
Run Code Online (Sandbox Code Playgroud)

如果你总是想使用序列(这可能是正确的选择),只需取出输入参数和NVL:

CREATE OR REPLACE PROCEDURE insertexample (
   name_in      in   sample.name%type,
   age_in       in   sample.age%type
)
IS
BEGIN
   insert into sample
               (user_id, name, age
               )
        values (seq_user_id.nextval, name_in, age_in);
END insertexample; 
Run Code Online (Sandbox Code Playgroud)