如何正确分配值

时间:2013-09-24 11:15:31

标签: oracle plsql sequence

我需要将我的序列值赋给参数id_nu。我该怎么办?

sname - 架构名称

当我以这种方式尝试时,我得到以下错误

PROCEDURE proc_createUser(sname IN varchar2, uname IN varchar2,ts IN varchar2) 
 IS

id_nu number(6);

BEGIN

id_nu := sname.UsersSeq.NextVal;

-- something

END proc_createUser;

2 个答案:

答案 0 :(得分:3)

试试这个,

CREATE OR REPLACE 
PROCEDURE proc_createuser(sname IN VARCHAR2, 
                          uname IN VARCHAR2,
                          ts IN VARCHAR2) 
IS
     id_nu NUMBER(6);
     v_sql VARCHAR2(200);
BEGIN
     v_sql := 'SELECT '|| sname||'.UsersSeq.NextVal FROM dual';
     EXECUTE IMMEDIATE v_sql INTO id_nu;
     dbms_output.put_line(id_nu);

END proc_createuser;

答案 1 :(得分:0)

这在11g中完成,您可以直接将序列值分配给变量。在早期版本中,您需要像这样写 -

PROCEDURE proc_createUser(sname IN varchar2, uname IN varchar2,ts IN varchar2) IS

id_nu number(6);

BEGIN


select sname.UsersSeq.NextVal into id_nu
from dual;

END proc_createUser;