0

我需要将我的序列值分配给参数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;
4

2 回答 2

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;
于 2013-09-24T11:48:20.527 回答
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;
于 2013-09-24T11:19:29.960 回答