有没有办法自动声明具有所需大小的 varchar2 常量?

问题描述 投票:0回答:2

有没有办法声明具有所需大小的 varchar2 常量?

例如我希望有以下定义,而不必在括号中显式声明大小:

c_my_string constant varchar2(3) := 'abc';

有没有办法做这样的事情:

c_my_string constant varchar2(sizeof('abc')) := 'abc';

除此之外,我当然可以将常量定义为原始常量,然后使用

UTL_RAW.CAST_TO_VARCHAR2(my_raw);

将其即时转换为 varchar2
oracle-database plsql
2个回答
0
投票

我想你可以使用本地函数,然后像变量一样引用它:

declare
  function f_my_string return varchar2 is
  begin
    return 'abc';
  end;
begin
  dbms_output.put_line(f_my_string);
end;
/

不知道为什么你想让它变得那么复杂。


0
投票

您可以使用

%type
作为变量(现在我检查了一下,在 11g 中不是常量,但这在以后的版本中已修复)。

declare
    l_my_string  varchar2(3) := 'abc';
    c_clone      constant c_my_string%type := 'def';
begin
    dbms_output.put_line(c_clone);
end;
/

从 12c 开始,您可以使用常量作为长度:

declare
    c_length     constant number := 3;
    c_my_string  constant varchar2(c_length) := 'abc';
    c_clone      constant c_my_string%type := 'abc';
begin
    dbms_output.put_line(c_clone);
end;
/
© www.soinside.com 2019 - 2024. All rights reserved.