我需要将我的序列值赋给参数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;
答案 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;