我估计是oracle内部类型转换的问题这样可以
11:32:36 SQL> select to_char( rawtohex('aaaa')) from dual;TO_CHAR(
--------
61616161但这样就不行了
11:32:22 SQL> declare
11:32:35   2  a varchar2(100);
11:32:35   3  begin
11:32:35   4  a:=to_char( rawtohex('aaaa'));
11:32:35   5  dbms_output.put_line(a);
11:32:35   6  end;
11:32:35   7  /
declare
*
ERROR 位于第1行:
ORA-06550: 第 4 行, 第 4 列:
PLS-00307: 有太多的 'TO_CHAR' 说明与此次调用相匹配
ORA-06550: 第 4 行, 第 1 列:
PL/SQL: Statement ignored

解决方案 »

  1.   

    answer from itpub.田伯光
    初级会员
    注册日期: 2002 Aug
    来自: hell
    发帖数量: 6来自ORACLE的回答:RAWTOHEX is a SQL function, as opposed to a PL/SQL function, and must be used in a SQL statement. SQL has no concept of an assignment opperator, :=. So change 
    l_strng := RAWTOHEX........ 
    to 
    SELECT RAWTOHEX(p_string) INTO l_string FROM dual; 
      

  2.   

    RAWTOHEX is a SQL function,那我用a:=rawtohex('aaaa')为什么可以运行?似乎应该说Rawtohex由两个版本,一个是sql版,一个是pl/sql版,而且并不兼容?这也太BT了吧?
    以前我就发现developer2000的sysdate和lpad/rpad函数与对应的数据库函数不同,那还可以解释为developer是在前端运行,数据库函数在服务器运行所以结果不同,现在rawtohex同在服务器运行都不一样,真是没法活了
      

  3.   

    我感觉不是影响使用的事情啊,如果不能用,那只有oracle公司才能解释的拉
      

  4.   

    RAWTOHEX 函数确实是SQL函数,我经过了多次测试,得到的结果与你相同,按说rawtohex既然为sql函数,执行 a:=rawtohex('aaaa')时就应该报错,至于oracle为什么不报错,我也说不清楚,也许真的有两个版本。总之你知道就行了。
      

  5.   

    似乎a:=rawtohex(x)大致相当于select rawtohex(hextoraw(x)) into a没有天理啊结贴了