bit类型在oracle,奇怪的Oracle bitand函数
最近在用Oracle的bitand函數是遇到了一個奇怪的現象:
declare
n number default
374123538;
val number;
begin
dbms_output.enable;
val := bitand(n,
16777215);
dbms_output.put_line(val);
end;
/
結果正確:
5024786
PL/SQL procedure successfully completed
然后修改這個n值:
declare
n number default
3741235380;
val number;
begin
dbms_output.enable;
val := bitand(n,
16777215);
dbms_output.put_line(val);
end;
/
結果出錯:
ORA-01426: 數字溢出
ORA-06512: 在line 6
然后我將用法修改:
declare
n number default 3741235380;
val number;
begin
dbms_output.enable;
--val := bitand(n,
16777215);?select bitand(n,
16777215) into val from dual;?dbms_output.put_line(val);
end;
/
結果又正確:
16693428
PL/SQL procedure successfully completed
奇怪,難度Oracle的PL/SQL中select ... into...和直接賦值不同?
就這個問題我在網上搜索,還發現有人遇到:
select bitand(1,2) from dual會報錯:
ORA-00932: 數據類型不一致
用一個函數將bitand包含起來即能解決該問題
例:
select to_char(bitand(1,2)) from dual;
select to_number(bitand(1,2)) from dual;
但我沒有遇到,可能是Oracle版本的原因。
真是一個奇怪的問題!
總結
以上是生活随笔為你收集整理的bit类型在oracle,奇怪的Oracle bitand函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 日本匠人又要“鞠躬”!巨头企业三菱电机承
- 下一篇: 高考700分数学满分男孩 物理也是满分: