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

标签 oracle plsql oracle11g size sqldatatypes

试图获取 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/

相关文章:

database - 数数来自多个表的记录;甲骨文数据库

java - PL/SQL 存储过程不会在 Java 中执行,但可以在 Oracle 中运行

sql - 如何只选择表中出现次数最少的记录?

用于解决数据库中的传递依赖项的 SQL 查询

php - OCI_NO_DATA oci8 oracle 错误

java - 通过firefox插件登录oracle数据库

oracle - 我想学习PL/SQL

oracle - 如何在Oracle 11g r2 Express版中更改字符集

oracle - 如何在 Oracle 10g 中获取无效对象的错误列表

sql - 如何使用 sysdate 更新日期列,包括动态 sql 中的时间戳