从表中选择包含默认值的列

时间:2013-07-11 06:44:27

标签: sql oracle

我想知道我是否可以有一个查询,它给出了列的值,包括列的默认值。它可行吗?

我不想使用联合或加入。

例如,我有一个表EMP为

CREATE TABLE EMP
 (EMP_NAME VARCHAR2(20) DEFAULT 'XXX');

INSERT INTO EMP(EMP_NAME) VALUES('A');
INSERT INTO EMP(EMP_NAME) VALUES('B');

当我用

之类的东西查询时
SELECT EMP_NAME FROM EMP;

我希望结果为

A
B
XXX

业务逻辑: 表EMP是包含所有员工列表的主表。在我有我的Oraganization任务的UI屏幕上EG:ORG_TASK我有一个包含两列的UI屏幕,由于各种其他原因,TASK_NAME,ASSINGED_EMPLOYEE和ASSINED_EMPLOYEE列不可用。

因此,当我想创建一个新任务时,我只需在另一列中输入任务,其描述,并需要从ASSINED_EMPLOYEE列的下拉列表中选择该员工。

如果无法在任何员工的那个时间点分配任务,我们希望下拉菜单也有一个名为TBD的默认值。

下拉列表的来源是一个查询,它从EMP表中选择员工姓名。 我们想将TBD附加到下拉列表中的值

1 个答案:

答案 0 :(得分:2)

仅使用简单的select语句是不可能的。您只能获取表格中存在的记录。

您正在寻找类似的内容:

SELECT EMP_NAME FROM EMP
union all
select DATA_DEFAULT from ALL_TAB_COLUMNS 
where TABLE_NAME = 'EMP'
and COLUMN_NAME = 'EMP_NAME';

但您必须找到将long类型转换为varchar的方法。

这不是我想的那么简单。我觉得提出新问题是个好问题。