Я пытаюсь создать скрипт, который будет автоматически получать ограничения из системной таблицы в Oracle, я просто хочу первичный ключ (P) и внешний ключ (R), и я должен игнорировать другие ограничения, такие как C, U, V, O .
SELECT
B.COLUMN_NAME,
CASE
WHEN A.CONSTRAINT_TYPE = 'P' THEN ', PRIMARY KEY('||B.COLUMN_NAME||')'
WHEN A.CONSTRAINT_TYPE = 'R' THEN ', FOREIGN KEY('||B.COLUMN_NAME||')
REFERENCES'||' '||(SELECT TABLE_NAME FROM all_cons_columns WHERE OWNER
='XXXXXXX' AND COLUMN_NAME = B.COLUMN_NAME AND CONSTRAINT_NAME !=
A.CONSTRAINT_NAME) ||'('||B.COLUMN_NAME||')'
ELSE ' '
END AS CONSTRAINTS
FROM ALL_CONSTRAINTS A JOIN TABLE_SCRIPT2 B
ON B.CONSTRAINT_NAME = A.CONSTRAINT_NAME
WHERE OWNER= 'XXXXXXX'
AND TABLE_NAME = 'XXXXXXX' )
Когда я запускаю скрипт, я получаю вывод, подобный этому
, PRIMARY KEY(XXXXXXX)
, FOREIGN KEY(XXXXXX) REFERENCES YYYYY(XXXXX)
для других ограничений я получил пробелы, если я уберу условие else, я получу (ноль) вместо пробелов, как получить только P, K без нуля или пробела.