Oracle 忽略'中的某些条件;案例';陈述

Oracle 忽略'中的某些条件;案例';陈述,oracle,Oracle,我正在尝试创建一个脚本,它将自动从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_NA

我正在尝试创建一个脚本,它将自动从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条件,我将得到(null)而不是空格,那么如何只得到p,K而不使用null或空格。

在caluse的位置添加一个下面的条件

A.CONSTRAINT_TYPE IN ('P','R') 

您只需要添加一个谓词
和case。。。结束
(或者,如果从case语句中删除
else'
位,
和case…end不为null
),我会尝试的,谢谢