Oracle 忽略'中的某些条件;案例';陈述
我正在尝试创建一个脚本,它将自动从oracle中的系统表中获取约束,我只需要主键(p)和外键(R),我必须忽略其他约束,如C、U、V、OOracle 忽略'中的某些条件;案例';陈述,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
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
),我会尝试的,谢谢