Oracle 中 varchar2 PL/SQL 子程序参数的大小限制是多少?
Posted
技术标签:
【中文标题】Oracle 中 varchar2 PL/SQL 子程序参数的大小限制是多少?【英文标题】:What is the size limit for a varchar2 PL/SQL subprogram argument in Oracle? 【发布时间】:2008-10-09 08:26:10 【问题描述】:在 Oracle PL/SQL 中创建过程(或函数)时,不能指定 varchar2 参数的最大长度,只能指定数据类型。例如
create or replace procedure testproc(arg1 in varchar2) is
begin
null;
end;
您知道可以作为 arg1 参数传递给 Oracle 中此过程的字符串的最大长度吗?
【问题讨论】:
【参考方案1】:在 PL/SQL 过程中可能高达 32KB
更多信息在这里: http://it.toolbox.com/blogs/oracle-guide/learn-oracle-sql-and-plsql-datatypes-strings-10804
【讨论】:
不完全是,真正的限制是 32767 字节,即 32KB - 1。正确答案是:***.com/a/22060657/480894【参考方案2】:我尝试了 testproc(lpad('', 32767, '')) 并且它有效。
32768 字节失败,所以它是 32K - 1 字节
【讨论】:
【参考方案3】:在 PL/SQL 中,自 10gR2 以来,VARCHAR2
数据类型的最大大小为 32767 字节(可能更早,但我刚刚查看了该版本的文档)。
文档参考:
Oracle 12cR1:PL/SQL Language Reference 12c Release 1 Oracle 11gR2:PL/SQL Language Reference 11g Release 2 Oracle 10gR2:PL/SQL User's Guide and Reference 10g Release 2【讨论】:
只是好奇,你知道为什么不是 32Kb 而不是 32Kb -1 吗? @Roland 不,我不知道。也许是null-terminated string,也许是别的东西。哦,请不要问为什么它是 2^15-1 而不是 2^16-1。只有甲骨文知道。 :) @Roland,这是因为默认的 2 字节有符号整数变量的范围是 -32768 到 32767。以上是关于Oracle 中 varchar2 PL/SQL 子程序参数的大小限制是多少?的主要内容,如果未能解决你的问题,请参考以下文章
Oracle通过PL/SQL Developer导出数据为CSV格式,VARCHAR2类型的字段如果存入的是数值(例如3307830000004059)太长,最后一位会被置为0