自定义过程(函数)的运行栈大小(function_stack_size)
📄字数 621
👁️阅读量 加载中...
引入版本
v12.0.0
功能描述
用户自定义过程(函数)的运行栈大小。
参数属性
| 属性 | 属性值 |
|---|---|
| 参数类型 | INTEGER |
| 默认值 | 1024 |
| 取值范围 | [100, 100000] |
| 影响范围 | 系统级 |
| 修改方式 | 离线修改,重启生效 |
使用场景说明
- 该参数控制任务线程在处理 PL/SQL 时允许参与计算的最大变量数,每个变量都会消耗 32 字节运算栈,用于存放计算的结果或计算结果的地址。
- 单个任务线程上负责 PL/SQL 计算的运算栈内存 = function_stack_size × 32 + 1024。
- 该参数配置不足以满足运算 PL/SQL 时,系统会上报 E19006 异常,用户可根据实际需要适当调大该参数值。
示例
sql
-- 离线修改 function_stack_size
编辑 xugu.ini 修改 function_stack_size,重启数据库服务后生效。
-- 在线查看 function_stack_size
SQL> SHOW function_stack_size;
/*
* 场景一:
* 1. function_stack_size = 100;
* 2. 重启数据库服务后新建连接;
*/
SQL> DECLARE
v1 INTEGER;
v2 INTEGER;
v3 INTEGER;
v4 INTEGER;
v5 INTEGER;
v6 INTEGER;
v7 INTEGER;
/*
* 此处省略定义的其余 110 个变量;
*/
v118 INTEGER;
v119 INTEGER;
v120 INTEGER;
BEGIN
send_msg('success.');
END;
/ -- 执行失败,抛出异常 E19006 运行栈溢出;