Quantcast
Channel: Question and Answer » oracle
Viewing all articles
Browse latest Browse all 717

ORA-01410 Error

$
0
0

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 = :x ',
          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.


Viewing all articles
Browse latest Browse all 717

Trending Articles