0

シーケンスの値を parameter に割り当てる必要があります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 に答える