我需要将我的序列值分配给参数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;
像这样试试
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;
这是在 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;