关于rawtohex的一个奇怪问题,哪位解释一下

MountLion 2002-09-05 11:12:41
Oracle 8.1.7

SQL> ed
已写入文件 afiedt.buf

1 declare
2 a varchar2(100);
3 begin
4 select rawtohex('aaaa') into a from dual;
5 dbms_output.put_line(a);
6* end;
SQL> /
61616161 --结果正确!

PL/SQL 过程已成功完成。

SQL> ed
已写入文件 afiedt.buf

1 declare
2 a varchar2(100);
3 begin
4 a:=rawtohex('aaaa');
5 dbms_output.put_line(a);
6* end;
SQL> /
AAAA --结果显然错误!

PL/SQL 过程已成功完成。
...全文
313 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
MountLion 2002-09-07
  • 打赏
  • 举报
回复
似乎a:=rawtohex(x)大致相当于select rawtohex(hextoraw(x)) into a

没有天理啊

结贴了
qiuyang_wang 2002-09-05
  • 打赏
  • 举报
回复
RAWTOHEX 函数确实是SQL函数,我经过了多次测试,得到的结果与你相同,按说rawtohex既然为sql函数,执行 a:=rawtohex('aaaa')时就应该报错,至于oracle为什么不报错,我也说不清楚,也许真的有两个版本。总之你知道就行了。
snowy_howe 2002-09-05
  • 打赏
  • 举报
回复
我感觉不是影响使用的事情啊,如果不能用,那只有oracle公司才能解释的拉
MountLion 2002-09-05
  • 打赏
  • 举报
回复
RAWTOHEX is a SQL function,那我用a:=rawtohex('aaaa')为什么可以运行?似乎应该说Rawtohex由两个版本,一个是sql版,一个是pl/sql版,而且并不兼容?这也太BT了吧?
以前我就发现developer2000的sysdate和lpad/rpad函数与对应的数据库函数不同,那还可以解释为developer是在前端运行,数据库函数在服务器运行所以结果不同,现在rawtohex同在服务器运行都不一样,真是没法活了
jlandzpa 2002-09-05
  • 打赏
  • 举报
回复
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;
bzszp 2002-09-05
  • 打赏
  • 举报
回复
我估计是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


jlandzpa 2002-09-05
  • 打赏
  • 举报
回复
奇怪,我去问问.

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧