Skip to content

G-2190: Avoid using ROWID or UROWID.

Blocker

Portability, Reliability

Reason

Be careful about your use of Oracle Database 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)

1
2
3
4
5
6
7
8
9
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)

1
2
3
4
5
6
7
8
9
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;
/