oracle long与varchar,Oracle Varchar2 LONG 长度?

突然在写程序的时候发现了个小问题,环境为Oracle10g,工具PL\SQL DEVELOPER7.1.5 ,写一个存储过程

例如:

有一个变量 V_I IN VARCHAR2(4000);

下面我求出传入的字符串的长度

CREATE OR REPLACE PROCEDURE TEST_LENGTH(

V_I varchar2--传入参数

) IS

V_I_STR varchar2(4000);--传入参数

v_r number(8);--计数

BEGIN

V_I_STR := V_I;--传入参数

select length(V_I_STR) INTO v_r from DUAL;

DBMS_OUTPUT.put_line(v_r);

END;

如果我传入的字符串大于2001,就会抛出错误ora-01480 trailing null missing from STR bind value

如果我传入的字符串小于 ,等于2000,就不抛出错误。

不知道Varchar2(4000)为啥缩水了。。。??

如果单独用Length()函数

SELECT LENGTH(str) from DUAL;

这里如果str的长度我传入大于4000的就会报错ora-01704 string literal too lang

这里想问Length()函数中的字符串有长度限制啊?

---如果我把存储过程中的参数类型换成 LONG 型

CREATE OR REPLACE PROCEDURE TEST_LENGTH(

V_I LONG--传入参数

) IS

V_I_STR LONG;--传入参数

v_r number(8);--计数

BEGIN

V_I_STR := V_I;--传入参数

select length(V_I_STR) INTO v_r from DUAL;

DBMS_OUTPUT.put_line(v_r);

END;

这里我传入的字符串长度 是4000,这时可以通过了。不报错了

但是如果我传入的是4001,这时就又报错了。。ORA-01460: unimplemented or unreasonable conversion requested

请各位大哥们给小弟解答解答,指点迷津下被?呵呵 谢谢哦�

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值