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!

解决方案 »

  1.   

    SQL> select utl_raw.cast_to_raw('tom is boy') from dual;UTL_RAW.CAST_TO_RAW('TOMISBOY'
    --------------------------------------------------------------------------------
    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                         
      

  2.   


    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
      

  3.   

    如果employee 和 notes 都是字段,那就
    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;不能一次多个字段
      

  4.   

    不知道为什么现在不报错了!
    不过这只是个中间过程
    我要实现把一个有数据的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