ora-06530:未初始化的组合
首先定义两个schema级别的类型:
create or replace type typ_info as object(name varchar2(10), sex varchar2(1));
create or replace type typ_infos as table of typ_info; --NESTED TABLE
然后测试:
SQL> declare
2 v_infos typ_infos := typ_infos();
3 begin
4 v_infos.extend;
5 v_infos(1).name := 'lyon';
6 v_infos(1).sex := 'M';
7 end;
8 /
declare
v_infos typ_infos := typ_infos();
begin
v_infos.extend;
v_infos(1).name := 'lyon';
v_infos(1).sex := 'M';
end;
ORA-06530: 引用未初始化的组合
ORA-06512: 在 line 6
出现此错误的原因看上去很明显,未初始化嘛。但是要看到,其实我在变量定义的时候已经初始化了:
v_infos typ_infos := typ_infos();
但是为何还会提示该错误呢?
会不会是schema级别的类型需要额外的初始化呢?
提出这个疑问主要是因为内部类型定义只要使用这种初始化方式就可以了:
SQL> declare
2 type typ_info is record(name varchar2(10), sex varchar2(1));
3 type typ_infos is table of typ_info;
4 v_infos typ_infos := typ_infos();
5 begin
6 v_infos.extend;
7 v_infos(1).name := 'lyon';
8 v_infos(1).sex := 'M';
9 end;
10 /
PL/SQL procedure successfully completed
百思不得其解,于是还是借助Google和百度,最终在asktom上找到了原因所在:
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:210612357425
原来schema级的初始化还需要额外的操作:
SQL> declare
2 v_infos typ_infos := typ_infos();
3 begin
4 v_infos.extend;
5 v_infos(1) := typ_info(null, null);
6 v_infos(1).name := 'lyon';
7 v_infos(1).sex := 'M';
8 end;
9 /
PL/SQL procedure successfully completed
即上面红色部分。这样就完成了初始化。
另外,是不是觉得还可以简化一下?是的,直接在初始化时就赋值:
SQL> declare
2 v_infos typ_infos := typ_infos();
3 begin
4 v_infos.extend;
5 v_infos(1) := typ_info('lyon', 'M');
6 end;
7 /
PL/SQL procedure successfully completed
总结:schema级的初始化需要其上一级类型进行赋值,而内部类型则只需要在定义时初始化即可。
分享到:
相关推荐
3. **ACCESS_INTO_NULL** (ORA-06530): 这个异常发生在尝试对未初始化的对象进行赋值时。在PL/SQL块中,确保变量在使用前已被初始化,以避免此异常。 4. **CASE_NOT_FOUND** (ORA-06592): 使用`CASE`语句时,如果`...
其中jeecms-context.xml是对标签的初始化 <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.shtml</welcome-file> <welcome-file>index.jhtml</welcome-file> </welcome-...
如果密码过期或者在安装后未正确初始化,你将无法使用scott用户登录。 1. 打开命令行,输入`sqlplus /nolog`进入无登录模式。 2. 使用sys用户的DBA权限连接,格式为`conn sys/your_sys_password as sysdba`,将...
- 初始化参数文件(init.ora):定义数据库运行时的参数,对数据库性能有直接影响。 - listener.ora:定义监听器,负责接收和转发客户端的连接请求。 4. SQL语言基础: - DDL(Data Definition Language):用于...
总结来说,Oracle ORA-22908异常是由于对NULL嵌套表的不适当操作引起的,解决方法主要是确保在进行元素级别操作前,先对嵌套表字段进行初始化。通过在插入或更新时显式创建一个空的`list_obj`对象,可以避免这种异常...
- **Initial Capacity**:初始化时创建的连接数。 - **Maximum Capacity**:连接池允许的最大连接数。 - **Capacity Increment**:当需要增加连接时的增量。 - **LoginDelay**:创建每个物理连接前的延迟时间...
例如,可以在数组类型中动态添加对象实例,使用对象的构造函数初始化新行数据。 总之,Oracle存储过程调用涉及到了SQL语法、参数传递、数据类型转换和面向对象编程等多个方面,理解并熟练掌握这些知识对于开发高效...
- **定义**: 带初始化参数文件的启动方式。 - **操作**: 先读取参数文件,再按照参数文件中的设置启动数据库。 - **8. startup EXCLUSIVE** - **定义**: 专有模式启动,只允许一个用户以管理员身份登录。 - **...
- 初始化参数文件:`init.ora`或`spfile.ora`,用于控制数据库实例的行为。 - 网络配置:通过Net Manager设置监听器(Listener)和服务名(Service Name),确保客户端可以连接到数据库。 3. **SQL语言**: - ...
- **初始化参数文件:** 需要手动编辑初始化参数文件(`init.ora`)来配置数据库。 **2.4 Oracle 9i 中有关简化数据库创建和管理的特性** - **Oracle Managed Files (OMF):** 自动管理数据文件和归档日志文件。 - **...
`ora-env`用来初始化Oracle环境变量,而`ora-backup`则执行实际的数据库导出操作。 - `ora-env`文件中设置了一系列环境变量,如`ORACLE_HOME`、`ORACLE_SID`、`DISPLAY`等,以确保Oracle环境的正确配置。 - `ora-...
- 通过`CREATE SPFILE FROM PFILE`命令,可以从初始化参数文件(PFILE)创建服务器参数文件(SPFILE)。 4. **数据存储结构**: - **Data Block**是最小的逻辑存储单位。 - **Extent**是一组连续的数据块,当...
- **parameterfile初始化参数文件**:包含数据库启动时使用的参数。 - **passwordfile口令文件**:包含数据库管理员的用户名和密码。 - **archivedlogfile归档日志文件**:包含已归档的重做日志。 ##### 9.3 ...
- **数据库参数文件**: 安装Oracle后会在`$ORACLE_HOME/dbs`目录下自动创建一个参数初始化文件,格式为`init<SID>.ora`。此外,还可以创建其他参数文件,并通过`IFILE`参数在主要参数文件中引用它们,格式为`config...
- **数据库初始化失败**:检查Oracle安装日志,定位并解决问题所在。 总之,Oracle 10g在RHEL AS4上的安装与配置是一个涉及多个环节的复杂过程,需要细致的操作和丰富的经验。通过遵循上述指导,可以有效提升安装...
- **初始化参数文件**:编辑`init<sid>.ora`(在12c及以上版本为`spfile<sid>.ora`),配置实例相关的参数,如内存结构(SGA、PGA)、进程数量等。 - **启动与关闭实例**:使用`startup`和`shutdown`命令启动和...
- 配置初始化参数文件(init.ora或spfile),如初始化参数DB_NAME、DB_DOMAIN、LOG_ARCHIVE_FORMAT等。 - 赋予用户必要的文件和目录权限。 - 执行安装脚本,如runInstaller,选择相应的安装类型,如典型安装或自定义...
9. **完成安装**:安装完成后,会自动启动数据库服务,并进行必要的初始化。 二、PL/SQL操作 PL/SQL是Oracle数据库的内置过程式语言,结合了SQL的查询功能和传统的编程语言特性。以下是PL/SQL的一些核心概念和操作...
- 参数文件(init.ora):配置数据库实例的初始化参数。 2. 内存结构(System Global Area, SGA): SGA是Oracle数据库在操作系统内存中分配的一块区域,大约占总内存的60-70%。主要组成部分包括共享池(shared ...