oracle default

kyxyljb 2012-03-26 05:23:56
create table table1(

id NUMBER(10),
t1 VARCHAR2(10) default '111'

);

执行成功的
update table1 set t1 = default;

现在我想这样执行,请问如何处理?
select * from table1 where t1 = default;
...全文
125 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2012-03-26
  • 打赏
  • 举报
回复
不可能是空的,我这边测试都ok的
kyxyljb 2012-03-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zsh0809 的回复:][/Quote]

没看明白什么意思,我按你的试了一下,但是返回结果集为空。

顺便能帮我看看,我自己的回帖,看看我的思路能怎么优化一下吗?
kyxyljb 2012-03-26
  • 打赏
  • 举报
回复
我用力一种笨办法,处理了PL/SQL开发的。

select * from table1 where t1 = default;
--oracle语法报错

我的意图是想查询的结果集是 :
t1 字段为 默认值的记录,于是我这样处理 ,把默认值保存到一个临时变量中


insert into table1 values(999999999)RETURN t1 INTO vNum;
select * from table1 where t1 = vNum;
delete from table1 where id = 999999999;
「已注销」 2012-03-26
  • 打赏
  • 举报
回复
第一步:建立一个函数转换Long与Varchar类型
CREATE OR REPLACE FUNCTION LongToString( COL_NAME VARCHAR2,TAB_NAME VARCHAR2) RETURN VARCHAR2
AS
Result_Value LONG;
BEGIN
SELECT DATA_DEFAULT INTO Result_Value FROM ALL_TAB_COLUMNS WHERE COLUMN_NAME=COL_NAME AND TABLE_NAME=TAB_NAME;
RETURN REPLACE(TRANSLATE(TRIM(Result_Value),CHR(13)||CHR(10),','),'''','');
END;


第二步:直接用就可以了:
SELECT * FROM TABLE1 
WHERE T1 IN
(
SELECT LONGTOSTRING('T1','TABLE1') T FROM DUAL
);

渭水飞熊 2012-03-26
  • 打赏
  • 举报
回复
这个值可以查出来,但是一般是LONG型的,而且转换也比较麻烦。如果你业务层是Java等,建议你建立一个静态接口或者类来存储这些缺省值。如果是你做PL/SQL开发,就将其存储一个表中(将缺省的列值都存到这表中统一管理)。

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧