加入收藏 | 设为首页 | 会员中心 | 我要投稿 通化站长网 (https://www.0435zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

如何在oracle数据库中获取varchar2的声明大小

发布时间:2021-01-12 03:16:32 所属栏目:站长百科 来源:网络整理
导读:试图在Oracle中获取已定义变量的大小.我可能需要在声明varchar2的大小时使用数字,而不是必须跟踪额外的变量或数字. 示例伪代码: declare myvar varchar(42) := 'a';begin /* I know the length is length(myvar) = 1. */ /* but how do I get 42? */ /* Wha

试图在Oracle中获取已定义变量的大小.我可能需要在声明varchar2的大小时使用数字,而不是必须跟踪额外的变量或数字.

示例伪代码:

declare 
  myvar varchar(42) := 'a';
begin

  /* I know the length is length(myvar) = 1. */
  /* but how do I get 42? */
  /* What is the max defined size of this variable */
  declared_size_of(myvar);  
end

我需要这个的原因是lpad字符串的长度为声明的大小,因此它不会产生异常.

解决方法

正如@Justin在他的评论中所说,如果使用CHAR数据类型,则不必显式空白填充字符串. Oracle会将值空白填充到它的最大大小.

从documentation,

If the data type of the receiver is CHAR,PL/SQL blank-pads the value
to the maximum size. Information about trailing blanks in the original
value is lost.

例如,

SQL> SET serveroutput ON
SQL> DECLARE
  2    myvar CHAR(42);
  3  BEGIN
  4    myvar:='a';
  5    dbms_output.put_line(LENGTH(myvar));
  6  END;
  7  /
42

PL/SQL procedure successfully completed.

SQL>

(编辑:通化站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!