ORACLE 檢視 LONG VARCHAR2

weixin_33766168發表於2015-05-15
昨天晚上重啟應用發現報資料庫連線異常,檢視了一些原來是引用了一些檢視做表碼轉化,這些檢視引用的資料庫出現問題,無法操作,只能將資料鏈重新修改或者說是重新建立檢視。(表碼在另外的一個庫中就有)。
切換資料庫鏈差不多就可以

create table t as select * from user_views t;

報ora-00997:illegal use of long  datatype


昨天比較著急,手動修改100張程式碼表,今天決心找到long轉換語句

create or replace function long_to_varchar2(v_name varchar2)
  return varchar2 as
  v_varchar2   varchar2(4000);
  l_high_value LONG;
  l_lengthb    number;
begin
  select t.TEXT_LENGTH
    into l_lengthb
    from user_views t
   where t.view_name = v_name;
  if l_lengthb
    select t.text
      into l_high_value
      from user_views t
     where t.view_name = v_name;
    v_varchar2 := substr(l_high_value, 1, 4000);
  else
    v_varchar2 := '超過了4000個長度';
  end if;
  return v_varchar2;
end;

select substr(text,1,4000) from user_views t;
ora-00932:inconsistent datatypes:expected NUMBER got LONG

為什麼在過程就可以執行在一般sql語句不可以執行????

閱讀(552) | 評論(0) | 轉發(0) |

相關文章