long型別資料的擷取
最近做了一個按日期進行分割槽的分割槽表,根據資料字典的值進行相應操作的 儲存過程,需要對user_tab_partitions 的high_value欄位進行擷取 去其中的日期值 並轉換成date型 然後進行一些條件的判斷。
long的值:TO_DATE(' 2009-04-04 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
我需要從中擷取 2009-04-04 並轉換成 日期型資料來進行判斷
SQL> declare n varchar2(30);
2 begin
3 select substr(high_value,11,10) into n from user_tab_partitions where table_name='ZYP_PT_DATE';
4 dbms_output.put_line(n);
5 end;
6 /
declare n varchar2(30);
begin
select substr(high_value,11,10) into n from user_tab_partitions where table_name='ZYP_PT_DATE';
dbms_output.put_line(n);
end;
ORA-06550: 第 3 行, 第 15 列:
PL/SQL: ORA-00932: 資料型別不一致: 應為 NUMBER, 但卻獲得 LONG
ORA-06550: 第 3 行, 第 1 列:
PL/SQL: SQL Statement ignored
經過多次嘗試 終於找到了解決方法 那就是先將long型的資料傳遞給字元型 再由字元型進行轉換
SQL>
SQL> declare n varchar2(50);
2 begin
3 select high_value into n from user_tab_partitions where table_name='ZYP_PT_DATE';
4 dbms_output.put_line(substr(n,11,10));
5 end;
6 /
declare n varchar2(50);
begin
select high_value into n from user_tab_partitions where table_name='ZYP_PT_DATE';
dbms_output.put_line(substr(n,11,10));
end;
ORA-06502: PL/SQL: 數字或值錯誤 : 字串緩衝區太小
ORA-06512: 在 line 3
還是報錯 不過已經沒有大問題了
SQL> declare n varchar2(500);
2 begin
3 select high_value into n from user_tab_partitions where table_name='ZYP_PT_DATE';
4 dbms_output.put_line(length(n));
5 end;
6 /
83
PL/SQL procedure successfully completed
離線出來的長度 應該要達到83才行
SQL> declare n varchar2(83);
2 begin
3 select high_value into n from user_tab_partitions where table_name='ZYP_PT_DATE';
4 dbms_output.put_line(substr(n,11,10));
5 end;
6 /
2009-04-04
PL/SQL procedure successfully completed
SQL>
完成測試, 達到預期目的 。
end
long的值:TO_DATE(' 2009-04-04 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
我需要從中擷取 2009-04-04 並轉換成 日期型資料來進行判斷
SQL> declare n varchar2(30);
2 begin
3 select substr(high_value,11,10) into n from user_tab_partitions where table_name='ZYP_PT_DATE';
4 dbms_output.put_line(n);
5 end;
6 /
declare n varchar2(30);
begin
select substr(high_value,11,10) into n from user_tab_partitions where table_name='ZYP_PT_DATE';
dbms_output.put_line(n);
end;
ORA-06550: 第 3 行, 第 15 列:
PL/SQL: ORA-00932: 資料型別不一致: 應為 NUMBER, 但卻獲得 LONG
ORA-06550: 第 3 行, 第 1 列:
PL/SQL: SQL Statement ignored
經過多次嘗試 終於找到了解決方法 那就是先將long型的資料傳遞給字元型 再由字元型進行轉換
SQL>
SQL> declare n varchar2(50);
2 begin
3 select high_value into n from user_tab_partitions where table_name='ZYP_PT_DATE';
4 dbms_output.put_line(substr(n,11,10));
5 end;
6 /
declare n varchar2(50);
begin
select high_value into n from user_tab_partitions where table_name='ZYP_PT_DATE';
dbms_output.put_line(substr(n,11,10));
end;
ORA-06502: PL/SQL: 數字或值錯誤 : 字串緩衝區太小
ORA-06512: 在 line 3
還是報錯 不過已經沒有大問題了
SQL> declare n varchar2(500);
2 begin
3 select high_value into n from user_tab_partitions where table_name='ZYP_PT_DATE';
4 dbms_output.put_line(length(n));
5 end;
6 /
83
PL/SQL procedure successfully completed
離線出來的長度 應該要達到83才行
SQL> declare n varchar2(83);
2 begin
3 select high_value into n from user_tab_partitions where table_name='ZYP_PT_DATE';
4 dbms_output.put_line(substr(n,11,10));
5 end;
6 /
2009-04-04
PL/SQL procedure successfully completed
SQL>
完成測試, 達到預期目的 。
end
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12216142/viewspace-584457/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python 資料處理(字串擷取、()\[]\{}資料型別、{}字典資料取值)Python字串資料型別
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-LONG和LONG RAW變數SQL資料型別變數
- Java long型別和Long型別的那些事Java型別
- Long型別的資料,利用COPY命令遷移型別
- long資料型別跨平臺問題資料型別
- 操作LONG型別型別
- int型別和long long型別運算執行時間的差別型別
- c++ 基本資料型別(int、float、double、long、long long)最大值,最小是表示方法C++資料型別
- Long raw和Long型別總結型別
- ora-00997 非法使用LONG資料型別資料型別
- ORA-00997: 非法使用 LONG 資料型別資料型別
- LONG型別複製型別
- long型別相關型別
- LONG型別遷移到LOB型別(三)型別
- LONG型別遷移到LOB型別(二)型別
- LONG型別遷移到LOB型別(一)型別
- Oracle Long型別轉換為Clob型別Oracle型別
- 關於long型別的轉換型別
- oracle裡long型別的總結Oracle型別
- JavaScript獲取物件資料型別JavaScript物件資料型別
- DATE型別擷取到天的效率型別
- oracle裡long型別詳解Oracle型別
- MongoDB Java開發從Mongo讀取Object值轉Long異常引起的資料型別轉換異常MongoDBJavaObject資料型別
- 讀取oracle long型別及判斷是否自動分割槽表Oracle型別
- 測試Java中的long,int基本型別Java型別
- js資料型別之基本資料型別和引用資料型別JS資料型別
- 資料型別: 資料型別有哪些?資料型別
- js從陣列後面擷取資料JS陣列
- 字串擷取 slice,substr,substring 的區別字串
- Java中的基本資料型別與引用資料型別Java資料型別
- 強資料型別和弱資料型別資料型別
- 靜態long型別常量serialVersionUID的作用型別UI
- 使用copy命令解決LONG型別的困擾型別
- 含LONG型別欄位的表無法MOVE型別
- 區別值型別資料和引用型別資料型別
- [windows]批處理獲取時間的long型值Windows
- Spring Mvc Long型別精度丟失SpringMVC型別
- LONG欄位型別向CLOB遷移型別