G-2190: Avoid using ROWID or UROWID.

Major

Portability, Reliability

Reason

Be careful about your use of Oracle-specific data types like ROWID and UROWID. They might offer a slight improvement in performance over other means of identifying a single row (primary key or unique index value), but that is by no means guaranteed.

Use of ROWID or UROWID means that your SQL statement will not be portable to other SQL databases. Many developers are also not familiar with these data types, which can make the code harder to maintain.

Example (bad)

DECLARE
   l_department_name departments.department_name%TYPE;
   l_rowid ROWID;
BEGIN
   UPDATE departments 
      SET department_name = l_department_name
    WHERE ROWID = l_rowid;
END;
/

Example (good)

DECLARE
   l_department_name  departments.department_name%TYPE;
   l_department_id    departments.department_id%TYPE;
BEGIN
   UPDATE departments 
      SET department_name = l_department_name
    WHERE department_id = l_department_id;
END;
/