I am getting ORA-01410 and ORA-06512
for the following block of code in a trigger im firing for deletion of a record in my table.
Are the calls correct ?
getlong ('xxx', 'YYY', :OLD.ROWID),
getlong ('XXX', 'yyy', :NEW.ROWID)
There seems to be a problem in the way Im passing OLD.ROWID and NEW.ROWID; there are OLD.ROWID and NEW.ROWID in the tables that I’m updating once the triggers are fired.
Here is the getlong store proc
CREATE OR REPLACE FUNCTION getlong (p_tname IN VARCHAR2, -- table name
p_cname IN VARCHAR2, -- column name
p_rowid IN ROWID)
RETURN VARCHAR2
AS
l_cursor INTEGER DEFAULT DBMS_SQL.open_cursor;
l_n NUMBER;
l_long_val VARCHAR2 (4000);
l_long_len NUMBER;
l_buflen NUMBER := 4000;
l_curpos NUMBER := 0;
BEGIN
-- Usage:
-- select getlong('TABLENAME', 'COLUMNNAME', rowid) from TABLENAME;
DBMS_SQL.
parse (l_cursor,
'select ' || p_cname || ' from ' || p_tname || ' where rowid =
',
DBMS_SQL.native);
DBMS_SQL.bind_variable (l_cursor, ':x', p_rowid);
DBMS_SQL.define_column_long (l_cursor, 1);
l_n := DBMS_SQL.execute (l_cursor);
IF (DBMS_SQL.fetch_rows (l_cursor) > 0)
THEN
DBMS_SQL.column_value_long (l_cursor,
1,
l_buflen,
l_curpos,
l_long_val,
l_long_len);
END IF;
DBMS_SQL.close_cursor (l_cursor);
RETURN l_long_val;
END getlong;
/
Thanks for helping.