ITPub博客

首页 > 数据库 > Oracle > ORACLE 视图 LONG VARCHAR2

ORACLE 视图 LONG VARCHAR2

原创 Oracle 作者:gh_95533 时间:2015-05-15 12:26:36 0 删除 编辑
昨天晚上重启应用发现报数据库连接异常,查看了一些原来是引用了一些视图做表码转化,这些视图引用的数据库出现问题,无法操作,只能将数据链重新修改或者说是重新创建视图。(表码在另外的一个库中就有)。
切换数据库链差不多就可以

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 <= 4000 then
    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语句不可以执行????

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29162273/viewspace-1655964/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: oracle 表阻塞
请登录后发表评论 登录
全部评论

注册时间:2014-10-24

  • 博文量
    44
  • 访问量
    105365