Reputation: 11
I have the following query
SELECT A.COLUMN_NAME AS COLUMN_NAME_1_ON_2,
UC.CONSTRAINT_NAME AS NAME_1_CONSTRAINTS_2_,
UC.SEARCH_CONDITION AS CONDITION
--,UC2.TABLE_NAME AS REFERENCE_TABLE
FROM USER_CONSTRAINTS UC
JOIN ALL_CONS_COLUMNS A ON A.CONSTRAINT_NAME = UC.CONSTRAINT_NAME
LEFT JOIN USER_CONSTRAINTS UC2
ON UC.R_CONSTRAINT_NAME = UC2.CONSTRAINT_NAME
This query SEARCH_CONDITION
condition of the constraint but it is coming as wide memo and not being being read by my code. Earlier In toad 11.5 I used the SEARCH_CONDITION_VC
which gave the proper result, but now when I run this column it gives the following error
[Error] Execution (2: 2): ORA-00904: "UC2"."SEARCH_CONDITION_VC": invalid identifier
How do I get use the result of the search condition in oracle toad 13.4?
Upvotes: 1
Views: 1004
Reputation: 142958
It isn't about TOAD version, but database version.
I presume you're connected to a database whose version is lower than 12c because - in those versions, there's no SEARCH_CONDITION_VC
column.
See the difference:
SQL> select banner from v$version where rownum = 1;
BANNER
--------------------------------------------------------------------------------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
SQL> desc user_constraints;
Name Null? Type
----------------------------------------------------- -------- ------------------------------------
OWNER VARCHAR2(128)
CONSTRAINT_NAME NOT NULL VARCHAR2(128)
CONSTRAINT_TYPE VARCHAR2(1)
TABLE_NAME NOT NULL VARCHAR2(128)
SEARCH_CONDITION LONG
SEARCH_CONDITION_VC VARCHAR2(4000) --> here it is
R_OWNER VARCHAR2(128)
R_CONSTRAINT_NAME VARCHAR2(128)
DELETE_RULE VARCHAR2(9)
STATUS VARCHAR2(8)
DEFERRABLE VARCHAR2(14)
DEFERRED VARCHAR2(9)
VALIDATED VARCHAR2(13)
GENERATED VARCHAR2(14)
BAD VARCHAR2(3)
RELY VARCHAR2(4)
LAST_CHANGE DATE
INDEX_OWNER VARCHAR2(128)
INDEX_NAME VARCHAR2(128)
INVALID VARCHAR2(7)
VIEW_RELATED VARCHAR2(14)
ORIGIN_CON_ID NUMBER
SQL>
SQL> select banner from v$version where rownum = 1;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
SQL> desc user_constraints;
Name Null? Type
----------------------------------------------------- -------- ----------------------------------
OWNER VARCHAR2(30)
CONSTRAINT_NAME NOT NULL VARCHAR2(30)
CONSTRAINT_TYPE VARCHAR2(1)
TABLE_NAME NOT NULL VARCHAR2(30)
SEARCH_CONDITION LONG --> no SEARCH_CONDITION_VC column
R_OWNER VARCHAR2(30)
R_CONSTRAINT_NAME VARCHAR2(30)
DELETE_RULE VARCHAR2(9)
STATUS VARCHAR2(8)
DEFERRABLE VARCHAR2(14)
DEFERRED VARCHAR2(9)
VALIDATED VARCHAR2(13)
GENERATED VARCHAR2(14)
BAD VARCHAR2(3)
RELY VARCHAR2(4)
LAST_CHANGE DATE
INDEX_OWNER VARCHAR2(30)
INDEX_NAME VARCHAR2(30)
INVALID VARCHAR2(7)
VIEW_RELATED VARCHAR2(14)
SQL>
What to do, then? Create a function which will return a string out of the "original" search_condition
. Something like this:
SQL> CREATE OR REPLACE FUNCTION f_long (par_con_name IN VARCHAR2)
2 RETURN VARCHAR2
3 IS
4 l_col LONG;
5 BEGIN
6 SELECT search_condition
7 INTO l_col
8 FROM user_constraints
9 WHERE constraint_name = par_con_name;
10
11 RETURN SUBSTR (l_col, 1, 4000);
12 END;
13 /
Function created.
SQL> SELECT f_long ('SYS_C0085257') FROM DUAL;
F_LONG('SYS_C0085257')
--------------------------------------------------------------------------
"OIB" IS NOT NULL
SQL>
Upvotes: 1