PL/SQL执行SELECT INTO语句后dbms_output输出缺少空格问题求解
问题原因
你代码中dbms_output.put_line方法的拼接逻辑里,固定文本的末尾没有预留空格:比如'Customer ID is'这个字符串的结尾没有加空格,和变量cid拼接时就会直接连在一起,最终输出就出现了is2这种不符合预期的连写效果。
解决方法
调整dbms_output.put_line的入参,给每个固定文本的末尾加上空格即可,修改后的完整代码如下:
declare cid number; orid number; olid number; begin cid := '2'; orid := '1006'; olid := '4'; select s_customer_t.customer_id, s_order_t.order_id, s_order_line_t.product_id into cid, orid, olid from s_customer_t, s_order_t, s_order_line_t where s_customer_t.customer_id = s_order_t.customer_id and s_order_t.order_id = s_order_line_t.order_id; dbms_output.put_line('Customer ID is ' || cid || ', Order ID is ' || orid || ', Product ID is ' || olid); end;
补充注意事项
你当前写的SELECT INTO语句没有加额外过滤条件,如果多表联查的结果超过1行,会触发TOO_MANY_ROWS运行异常,你提前给三个变量赋的初始值也会被查询结果直接覆盖。如果你的需求是查询特定客户、特定订单的记录,建议在WHERE条件中追加对应过滤规则,避免运行报错。
内容的提问来源于stack exchange,提问作者dhjeffery89
相关产品推荐
相关产品推荐

