m1l,

Thanks for your hints! I tried using a PROCEDURE with a OUT parameter, but I can't realize where the value will go...

The original code is just below...

---
CREATE OR REPLACE PROCEDURE addNode
(
p_namv IN VARCHAR2,
p_desv IN VARCHAR2,
p_parv IN VARCHAR2,
p_lnkv IN VARCHAR2,
p_nhsv IN VARCHAR2,
p_ordv IN VARCHAR2,
p_frv IN OUT NUMBER,
p_idv IN OUT NUMBER
) IS
BEGIN
p_idv := 0;
SELECT first INTO p_frv FROM nodes WHERE id = p_parv;
IF SQL%FOUND THEN
SELECT nodes_id_seq.NEXTVAL INTO p_idv FROM DUAL;
IF( p_parv = 0 ) THEN
p_frv := p_idv;
END IF;
IF( p_idv > 0 ) THEN
INSERT INTO nodes VALUES (p_namv, p_desv, p_frv, p_parv, p_idv, p_ordv);
INSERT INTO nodesAttribs VALUES( p_idv, 'NUMHDS', p_nhsv);
INSERT INTO nodesAttribs VALUES( p_idv, 'LINK', p_lnkv);
END IF;
END IF;

RETURN p_idv;
END;
/

---

As you can see, the INSERTs are not allowed. How people use to work around this situation? I have an alternative plan, which is first get some values and then insert them. But I'd rather do it in one piece...