database - 如何更新 oracle 数据库中的子类型属性值?
问题描述
如何更新子类型的列值?
像这样的代码无法访问学生的成绩属性:
update persons set grade = 'graduated';
CREATE OR REPLACE TYPE person (
name varchar2(20),
age number,
address varchar2(20)
) NOT FINAL;
CREATE OR REPLACE TYPE student UNDER person (
grade varchar2(20)
) NOT FINAL;
CREATE TABLE persons OF person;
INSERT INTO persons VALUES (student('Jon', 'undergraduate'));
如何将学生成绩更改为“已毕业”?
解决方案
我找到了我的问题的答案。
这是更新子类型属性的代码:
DECLARE
s student;
BEGIN
select treat(value(p) as student) into s from persons p where name = 'Jon';
s.grade = 'graduated';
update persons p set value(p) = s where name = 'Jon';
END;
推荐阅读
- arrays - MIPS - 帮助初始化数组
- java - 在 Mvn Clean Install 上找不到包 Maven 编译错误
- sql - 分析功能,只计算一次拥有多个帐户的每个客户
- python - 想将多个数据框中的一些列添加到一个特定的数据框中
- laravel - 如何修复不完整的多张图片上传
- javascript - 两个包含对象的 js 数组的完全外连接 - 连接的数组包含新属性“动作”(添加/删除/编辑/相同)
- android - React native 在原生播放器上启动 mp4 视频
- php - 如何将注销的用户重定向到我的帐户页面而不是结帐页面
- oracle - 在 Oracle 中比较查询结果中的字段
- sql - 从一张表中删除两条记录