Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 我们在哪里存储PLSQL包规范中声明的全局变量_Oracle_Plsql_Package - Fatal编程技术网

Oracle 我们在哪里存储PLSQL包规范中声明的全局变量

Oracle 我们在哪里存储PLSQL包规范中声明的全局变量,oracle,plsql,package,Oracle,Plsql,Package,在PLSQL中,我们将在包规范中声明的全局变量存储在哪里?Oracle将全局变量存储在作为程序全局区域一部分的内存结构中。您可以在中阅读有关PGA的内容 变量只能通过PL/SQL访问,我们不能通过数据字典视图访问它们 会话变量只能放在PGA中,它们不能溢出到磁盘,因此我们可能必须小心加载太多数据。我们需要避免将大型表存储在变量中,这通常可以通过使用FOR循环处理游标或使用LIMIT子句来实现 例如,下面的代码将大量数据加载到一个简单的集合中 --Load 20,000 large strings

在PLSQL中,我们将在包规范中声明的全局变量存储在哪里?Oracle将全局变量存储在作为程序全局区域一部分的内存结构中。您可以在中阅读有关PGA的内容

变量只能通过PL/SQL访问,我们不能通过数据字典视图访问它们

会话变量只能放在PGA中,它们不能溢出到磁盘,因此我们可能必须小心加载太多数据。我们需要避免将大型表存储在变量中,这通常可以通过使用FOR循环处理游标或使用LIMIT子句来实现

例如,下面的代码将大量数据加载到一个简单的集合中

--Load 20,000 large strings.  Takes about 10 seconds.
declare
    type string_nt is table of varchar2(4000);
    v_strings string_nt := string_nt();
begin
    for i in 1 .. 20000 loop
        v_strings.extend;
        v_strings(v_strings.count) := lpad('A', 4000, 'A');
    end loop;
    null;
end;
/
我们不能在数据字典中查看变量数据,但我们可以通过数据字典检查数据的大小。在这种情况下,大约需要105MB的内存来存储80MB的原始数据:

--Maximum session PGA memory.
select value/1024/1024 mb
from v$sesstat
join v$statname
    on v$sesstat.statistic# = v$statname.statistic#
where v$statname.name = 'session pga memory max'
order by value desc;

我的回答是基于这样一个假设,即您之所以这样问,是因为您担心存储大量数据。如果我的假设是错误的,请更新问题以准确地解释您在寻找什么。

您所说的商店是什么意思?持久存储在表中?我们是谁?程序在哪里存储变量?