用于开发数据库对象类型和对象表的对象模型为 Oracle 数据库带来了面向对象的数据存储。 我们讨论了创建对象类型,该类型由对象规范和对象主体组成。 然后,我们从对象类型创建了一个对象表。 在本文中,我们将讨论更改对象类型以及怎么从数据库中删除对象类型。
![如何使用Toad for Oracle Pro DB Admin 更改和删除数据库对象.png 如何使用Toad for Oracle Pro DB Admin 更改和删除数据库对象.png](/static/upload/image/20221104/1667545686131369.png)
为什么要更改或删除数据库对象?
如果组织的数据需求发生变化,则可能需要修改数据库对象。删除数据库对象本质上会删除它,而更改数据库对象则允许DBA和开发人员添加或删除成员属性和方法。作为更改数据库对象的结果,它会更改类型的规范。
Oracle数据库提供ALTER TYPE语句来更改数据库对象类型。请注意,当对象类型的规范更改时,必须重新编译它。如果更新了对象类型的主体,则还必须重新编译该类型的主体。
我们将讨论如何处理这两种情况。
如何更改数据库对象
首先,将名为edition的属性添加到我们在第一篇文章中创建的对象类型catalog_type中。ADD ATTRIBUTE子句用于添加属性。新属性必须是唯一的,因为它的名称不能与现有属性相同,甚至不能与方法名称相同。新属性将添加到属性列表的末尾。如果存在任何从属数据库对象类型和对象表,则可以使用CASCADE子句将对对象类型的更改传播到这些从属对象类型和表。由于我们确实有一个依赖对象表,我们将使用下面的ALTER TYPE语句添加一个属性。
更改类型CATALOG_TYPE
添加属性(edition VARCHAR2(20)) CASCADE;
将ALTER TYPE语句复制到Quest®Toad®for Oracle的编辑器中,然后单击Execute Script,如图1所示。
![如何使用Toad for Oracle Pro DB Admin 更改和删除数据库对象.png 如何使用Toad for Oracle Pro DB Admin 更改和删除数据库对象.png](/static/upload/image/20221104/1667545774209291.png)
如图2所示的Output选项卡输出所示,对象被更改。
![Output选项卡输出对象.png Output选项卡输出对象.png](/static/upload/image/20221104/1667545783204230.png)
在Schema Browser中,新属性EDITION如图3所示。Schema浏览器可能需要刷新,例如关闭并重新打开。
![新属性EDITION.png 新属性EDITION.png](/static/upload/image/20221104/1667545789212628.png)
数据库对象类型的主体不能用ALTER type语句更改,应该单独更改,我们将在下面讨论。在模式浏览器中,右键单击CATALOG_TYPE类型并选择编辑器,如图4所示。
![CATALOG_TYPE类型.png CATALOG_TYPE类型.png](/static/upload/image/20221104/1667545795830333.png)
在get_details过程中,在DBMS_OUTPUT中添加edition属性。PUT_LINE语句,如图5所示。单击ExecuteScript运行修改后的脚本。
![DBMS_OUTPUT中添加edition属性.png DBMS_OUTPUT中添加edition属性.png](/static/upload/image/20221104/1667545802185241.png)
如输出(图6)所示,对象类型的主体发生了变化。
![输出对象.png 输出对象.png](/static/upload/image/20221104/1667545807160376.png)
我们修改了数据库对象类型的规范和主体。要验证新类型和主体是什么,请在模式浏览器中选择相应的选项卡。Spec选项卡(图7)显示了更改后的规范。ALTER TYPE语句已添加到规范中,原始的CREATE TYPE声明不会直接更改。
![ALTER TYPE语句添加到规范中.png ALTER TYPE语句添加到规范中.png](/static/upload/image/20221104/1667545812395614.png)
对象类型的主体显示在body选项卡中(图8)。
![body选项卡.png body选项卡.png](/static/upload/image/20221104/1667545819497991.png)
更改数据库对象类型的规范和正文后,使用带有compile子句的ALTER type语句再次编译规范和正文。以下语句编译catalog_type类型的规范。
ALTER TYPE catalog_TYPE编译器规范;
以下语句编译catalog_type主体的主体。
ALTER TYPE catalog_TYPE编译器主体;
如果只需要再次编译规范或正文,则前面的语句很有用。因为我们修改了规范和正文,所以我们可以使用以下语句来编译规范和正文。
ALTER TYPE catalog_TYPE编译器;
将语句复制到Toad for Oracle中的编辑器中,然后单击Execute Script(图9)。
![Execute Script工具.png Execute Script工具.png](/static/upload/image/20221104/1667545828291131.png)
我们没有考虑数据库对象类型catalog_type具有依赖对象表。为了能够使用COMPILE选项更改类型,该类型不能有任何依赖类型或对象表。生成ORA-02311错误,如图10所示。
![ORA-02311错误.png ORA-02311错误.png](/static/upload/image/20221104/1667545835122773.png)
输出选项卡中也会输出ORA-02311错误。
我们需要删除对象表才能编译更改后的对象类型。在SchemaBrowser中选择Tables,右键单击CATALOG_TYPE_T对象表并选择Drop(图11)。
![SchemaBrowser中选择Tables键.png SchemaBrowser中选择Tables键.png](/static/upload/image/20221104/1667545844473117.png)
在“确认放置表格”对话框中单击“确定”。
对象表将被删除,如模式浏览器中未列出表所示。再次运行带有COMPILE选项的ALTER TYPE语句。
对象类型会根据“输出”选项卡中的消息进行更改。
更改后的对象类型CATALOG_type中的属性和方法列在“模式浏览器”的“属性和方法”选项卡中(图12)。
![CATALOG_type属性和方法.png CATALOG_type属性和方法.png](/static/upload/image/20221104/1667545853169889.png)
如何从新的数据库对象类型创建对象表
因为我们删除了与对象类型关联的对象表,所以我们应该重新创建它。右键单击模式浏览器中的CATALOG_TYPE对象类型,然后选择Create>ObjectTable(图13)。
![CATALOG_TYPE对象类型.png CATALOG_TYPE对象类型.png](/static/upload/image/20221104/1667545860862722.png)
Click on OK in the Information dialog that is displayed. An object table CATALOG_TYPE_T gets created as shown in Schema Browser (Figure 14).
![CATALOG_TYPE_T工具栏.png CATALOG_TYPE_T工具栏.png](/static/upload/image/20221104/1667545871160618.png)
与更改对象类型之前相比,对象表有一个名为EDITION的附加列(图15)。
![对象表.png 对象表.png](/static/upload/image/20221104/1667545878141129.png)
对象表最初没有数据,如SchemaBrowser中的data选项卡(图16)所示。
![SchemaBrowser中的data选项卡.png SchemaBrowser中的data选项卡.png](/static/upload/image/20221104/1667545918160657.png)
下面的PL/SQL脚本将数据添加到对象表中,还查询该表以获取并列出添加的数据。
catalog CATALOG_TYPE;
BEGIN
INSERT INTO CATALOG_TYPE_T VALUES (CATALOG_TYPE(1, 'Oracle Magazine', 'Oracle Publishing','Jan/Feb 2021'));
INSERT INTO CATALOG_TYPE_T VALUES (CATALOG_TYPE(2, 'Java Magazine', 'Oracle Publishing','Jan/Feb 2021'));
SELECT VALUE(c) INTO catalog FROM CATALOG_TYPE_T c WHERE c.id = 2;
catalog.get_details();
END;
将脚本复制到编辑器,然后单击执行脚本。PL/SQL过程如输出所示(图17)。
![PL/SQL.png PL/SQL.png](/static/upload/image/20221104/1667545926168062.png)
DBMS输出选项卡(图18)显示了PL/SQL脚本中的Select语句的输出。
![DBMS输出选项卡显示结果.png DBMS输出选项卡显示结果.png](/static/upload/image/20221104/1667545935145320.png)
如何删除数据库对象
要删除对象类型,请右键单击模式浏览器中的对象类型,然后选择图19中的catalog_type对象类型所示。
![1667545950162719.png 19.png](/static/upload/image/20221104/1667545950162719.png)
确认的Drop类型对话框提示是否应使用强制选项删除对象类型。如果使用了强制选项,则任何因类型和表格也会被删除。选择不要使用强制选项(图20),然后单击确定。
![1667545956949694.png 20.png](/static/upload/image/20221104/1667545956949694.png)
错误消息对话框(图21)显示ORA-02303错误,表明无法删除具有依赖关系的类型。
![1667545964122718.png 21.png](/static/upload/image/20221104/1667545964122718.png)
要删除对象表,请在“模式浏览器”中的CATALOG_TYPE_T表上单击鼠标右键,然后选择“删除”。
在Confirm Drop Table提示符中单击OK。删除依赖对象表后,如果不存在其他依赖项,则可以删除对象类型。在模式浏览器中的对象类型CATALOG_type上单击鼠标右键,然后再次选择“拖放”。
将显示“确认放置类型”对话框。再次选择Do Not Use Force Option并单击OK(参见图24)。对象类型CATALOG_type被删除,并且不会在Schema Browser>Types中列出(图22)。
![1667546015111985.png 22.png](/static/upload/image/20221104/1667546015111985.png)
在这篇文章中,我们讨论了创建对象类型,从对象类型创建对象表,更改对象类型并将对象类型删除 - 所有to toad for toad for Oracle for Oracle Pro带有DB Admin模块。oracle的DBA版本已预装DB管理模块。
上一条:怎么在 Toad for Oracle Pro DB Admin 中安排批处理作业
下一条:使用 Toad 生成 SQL 查询的提示