Oracle数据库的pl/sql编程问题:

dbms_output.put('转账前总余额:');
dbms_output.put_line(account_a+account_b);

和dbms_output.put_line('转账前总余额:'||account_a+account_b);为什么要分开来写?下面的执行出错,上面分开来写就没问题,请问这是为什么啊
最新回答
一澜冬雪

2024-10-03 14:07:05

看你的account_a + account_b,显然这两个字段是字符型,ORACLE如果是字符串拼接,是不能用+的,如果这两个字段是字符型,那么+应该修改为||。
所以,既然从这个语句可以看出account_a + account_b这两个字段是数字型,那么||进行字符串拼接的时候,要求左右都是字符型,才会正确。
所以,你的||右边,不是字符型。而是数字型。ORACLE应该用TO_CHAR来把数字型转化成字符型。
dbms_output.put_line('转账前总余额:'||to_char(account_a+account_b));
这两个分开写,上面的那个写法,输出的结果是在两行,而下面,会使输入结果在一行中。
而且如果直接使用put_line,括号内可以是数字型,而第二个,则是字符数字混合,而其拼接的符号两遍也是两种类型,必然出错。
最美的痕迹叫回忆

2024-10-03 16:19:10

dbms_output.put_line()显示的内容是有长度约束的,看dbms_output.put_line('转账前总余额:'||account_a+account_b);是不是因为字符串过长!理论上,这两组语句效果是一样的。