如何从Oracle对象表中正确检索数据?
解决对象表查询只显示类型标识的问题
你遇到的是SQL Developer对对象类型的默认显示逻辑问题,VALUE(e)返回的是完整对象实例,工具默认只展示类型的限定名(用户名.类型名),看不到具体属性值,给你几个实用解决方法:
直接查询对象属性字段
这是最直接的方式,直接指定要查看的属性列:SELECT e.name, e.category, e.price FROM S_PRODUCTS e;执行后就能看到每条数据的具体属性值。
给对象类型添加自定义字符串输出方法
给PRODUCT类型增加一个成员函数,把对象属性拼接成可读字符串:-- 重新创建带成员函数的类型 CREATE OR REPLACE TYPE PRODUCT AS OBJECT( name varchar2(40), category varchar2(30), price varchar2(10), MEMBER FUNCTION to_string RETURN VARCHAR2 ); / -- 实现成员函数体 CREATE OR REPLACE TYPE BODY PRODUCT AS MEMBER FUNCTION to_string RETURN VARCHAR2 IS BEGIN RETURN '商品名: ' || name || ', 分类: ' || category || ', 价格: ' || price; END; /之后用下面的语句查询,就能直接看到格式化后的对象内容:
SELECT e.to_string() FROM S_PRODUCTS e;调整SQL Developer显示设置
打开工具的偏好设置(Tools -> Preferences),依次找到Database -> Advanced,勾选Display Structured Data in Grid选项。设置完成后,再执行SELECT VALUE(e) from S_PRODUCTS e;,结果网格里的对象会显示可展开的节点,点击就能查看所有属性的具体值。
内容的提问来源于stack exchange,提问作者db_dora_1234
相关产品推荐
相关产品推荐

