Home / Oracle Error / ORA-54002 when trying to create Virtual Column using REGEXP_REPLACE on Oracle 12cR2

ORA-54002 when trying to create Virtual Column using REGEXP_REPLACE on Oracle 12cR2

I encountered an issue today trying to create a table in an Oracle 12cR2 database, the DDL for which, I extracted from an Oracle 11gR2 database. The error returned when trying to create the table was:

ORA-54002: only pure functions can be specified in a virtual column expression

The definition of the table included a Virtual Column which used a REGEXP_REPLACE call to derive a value from another column on the table.

Running this on 11gR2 gives:

Running this on 12cR2 gives:

As you can see, 12cR2 gives the ORA-54002 error.

In my case, I was able to rewrite the virtual column to use simple string functions such as SUBSTR, TRANSLATE and INSTR to achieve what I wanted and the virtual column was allowed to be created with these – problem solved – a shame really as the REGEXP_REPLACE approach was far neater.

BCS Exam Preparation
BCS Exam Preparation
* মোট প্রশ্ন ১৬৭৭১
* প্রত্যক বিষয় টপিক অনুযায়ী সাজানো
* অংক এবং ইংলিশ এর প্রত্যকটি প্রশ্ন ব্যাখ্যাসহ
* আগের পরীক্ষার প্রশ্ন গুলো সমাধান করা
GET UPDATE INSTANTLY
Increase your knowledge!
Your Information will never be shared with any third party.
BCS Exam Preparation
BCS Exam Preparation
* মোট প্রশ্ন ১৬৭৭১
* প্রত্যক বিষয় টপিক অনুযায়ী সাজানো
* অংক এবং ইংলিশ এর প্রত্যকটি প্রশ্ন ব্যাখ্যাসহ
* আগের পরীক্ষার প্রশ্ন গুলো সমাধান করা