select utl_raw.cast_to_raw('tom is boy') from dual;
正常,
select utl_raw.cast_to_raw(employee notes) from employees;
出现
ora-06553: pls-306 "wrong number or types of arguments in call tothank you!
正常,
select utl_raw.cast_to_raw(employee notes) from employees;
出现
ora-06553: pls-306 "wrong number or types of arguments in call tothank you!
--------------------------------------------------------------------------------
746F6D20697320626F79SQL> select utl_raw.cast_to_raw(value) from testtab;UTL_RAW.CAST_TO_RAW(VALUE)
--------------------------------------------------------------------------------
6161
6262
6363SQL> desc testtab;
Name Type Nullable Default Comments
----- ------------ -------- ------- --------
DAT DATE Y
VALUE VARCHAR2(10) Y
SQL> select utl_raw.cast_to_raw(photo) from h_ygxx where rownum=1;select utl_raw.cast_to_raw(photo) from h_ygxx where rownum=1ORA-06553: PLS-306: 调用 'CAST_TO_RAW' 时参数个数或类型错误SQL> desc utl_raw.cast_to_raw;
Parameter Type Mode Default?
--------- -------- ---- --------
(RESULT) RAW
C VARCHAR2 IN SQL> 传入的类型应该是VARCHAR2
select utl_raw.cast_to_raw(employee),utl_raw.cast_to_raw(notes) from employees;如果是字符串,那就
select utl_raw.cast_to_raw('employee notes') from dual;不能一次多个字段
不过这只是个中间过程
我要实现把一个有数据的varchar2(5000)的字段移到bolb的字段中去。
可以导表(方法一)
insert into employees_new (employee notes)
(select utl_raw.cast_to_raw(employee notes) from employees);
employees_new中的employee notes字段是blob,本以为select成功就可以了可是现在提示
ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
是不是要用到表空间之类的处理!
-----------------------------
(方法二)
ALTER TABLE employees_new ADD (col BLOB) LOB (col) STORE AS col_seg (TABLESPACE tb1_ts);
-----------------------------
上面写道的是什么含义??
重点是LOB (col) STORE AS col_seg!
我写了
ALTER TABLE employees_new ADD (col5 BLOB) LOB (col5) STORE AS (TABLESPACE tbNotes_ts)
正常结束!可是执行
UPDATE employees_new SET col = utl_raw.cast_to_raw(employee notes)的时候
同样提示ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小如何改正
thank you