试图获取 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 在他的评论中所说的那样,如果您使用 ,则不必明确地将字符串填充为空白。字符 数据类型。 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>
关于oracle - 如何获取oracle数据库中varchar2的声明大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30633079/