小编zep*_*zep的帖子

与Number相比,Pls_integer值需要"更少"的存储空间.如何验证?

版本:11.2.0.2.0

我想验证我在手册中再次阅读的以下断言:

与NUMBER数据类型和NUMBER子类型相比,PLS_INTEGER数据类型具有以下优势:

PLS_INTEGER values require less storage.
Run Code Online (Sandbox Code Playgroud)

我正在寻找有效使用的字节.

我知道Oracle内置数据类型和PL/SQL数据类型.我再次阅读文档中的特定部分:

Oracle数据类型

PL/SQL数据类型

我已经回顾了一些有用的功能: visze,dump(等等:length,lengthb).我在这里以及其他论坛/博客中搜索过,即使过去看起来很明显,我也有点陷入困境.


我的虚拟程序(visize函数不会显示pls_integer的任何有效值,因为Tony Andrews在下面的答案中说明原因(注释13/07/11)

create or replace procedure TestSize
(
    testPlsInteger in pls_integer
   ,testNumber     in number
) is
    sizePlsInteger pls_integer;
    sizeNumber     pls_integer;
    FORMAT_DIM constant pls_integer := 15;
begin
    select vsize(testPlsInteger), vsize(testNumber)
    into   sizePlsInteger, sizeNumber
    from   dual;

    dbms_output.put_line('number:' || rpad(testPlsInteger, FORMAT_DIM)
                        ||' PLS_INTEGER SIZE:' || rpad(sizePlsInteger, FORMAT_DIM) 
                        || ' NUMBER SIZE:' || sizeNumber);
end;
Run Code Online (Sandbox Code Playgroud)

测试

begin
    TestSize(2147483647, 2147483647);
    TestSize(1, …
Run Code Online (Sandbox Code Playgroud)

oracle plsql

5
推荐指数
1
解决办法
2364
查看次数

PL SQL - 将数值转换为varchar(百分比)

我有一个查询,它使用两个子查询的输出(R1,R2)来划分它们:

select a.R1/b.R2*100.0 as Result
from
(query1) a,
(query2) b
Run Code Online (Sandbox Code Playgroud)

除法输出是(十进制)数字以及R1,R2输出.

我想在结果中添加'%'符号(即10,75%),但使用类似下面的解决方案,会返回错误01722 =无效的数字

select cast(cast(a.R1/b.R2*100.0 as decimal(10,2)) as varchar(10)) + '%' as Result
from
(query1) a,
(query2) b
Run Code Online (Sandbox Code Playgroud)

oracle plsql

4
推荐指数
1
解决办法
2万
查看次数

标签 统计

oracle ×2

plsql ×2