oracle从char赋值到varchar2的几种情况

本文探讨了PL/SQL环境下CHAR类型数据直接赋值、通过FUNCTION及PROCEDURE返回赋值到VARCHAR2类型的三种场景,并展示了不同情况下长度的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三种情况:

1  char变量直接赋值到varchar2

2  function输出的char赋值到varchar2

3  procedure输出的char赋值到varchar2

set serveroutput on
declare
v_char char:='Y';
v_varcha2 varchar2(10);
function  functestchar return char
   is
   begin
   return 'Y';
   end functestchar;
procedure  testchar(p_polno      out        char)
   is

   begin
   p_polno:='Y';
   end testchar;
begin
v_varcha2:=v_char;
dbms_output.put_line('v_varcha2='||v_varcha2);
dbms_output.put_line('length(v_varcha2)='||length(v_varcha2));

testchar(v_varcha2);
dbms_output.put_line('v_varcha2='||v_varcha2);
dbms_output.put_line('length(v_varcha2)='||length(v_varcha2));

v_varcha2:=functestchar;
dbms_output.put_line('v_varcha2='||v_varcha2);
dbms_output.put_line('length(v_varcha2)='||length(v_varcha2));
end;
/

输出结果:

v_varcha2=Y
length(v_varcha2)=1
v_varcha2=Y        
length(v_varcha2)=10
v_varcha2=Y
length(v_varcha2)=1

 


在9i和10g下的验证结果均为

char变量直接赋值 function输出的char赋值到varchar2,内容和位数不变,procedure输出的char赋值到varchar2,会按照位数在后面补空格

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值