gpt4 book ai didi

sql - oracle "create or replace type"和 "type type_name is..."语法有什么区别

转载 作者:行者123 更新时间:2023-12-04 14:09:30 24 4
gpt4 key购买 nike

我是 pl/sql 新手。现在我有一个关于 oracle 的问题 类型 .我看到有两种类型的 类型 :

CREATE OR REPLACE TYPE "TYPE_NAME1" AS OBJECT
(
temp_trans_id number(10),
trans_id number(10),
resion_id number(10)
)

或者
type new_type_name is record(
column1 number,
column2 varchar2(50)
);
variable_name new_type_name;

有什么不同?万分感谢。

最佳答案

除了前面的答案,声明的范围也有很大的不同。

当您在 PL/SQL 中声明类型时,例如示例中的记录类型,它只能从 PL/SQL 中使用。如果它是在过程或函数的本地声明的,那么它只能在该子程序中使用;如果它在包体中声明,则只能在该包中使用;如果它是在包头中声明的,它可以被任何对包具有执行访问权限的 PL/SQL 代码使用。决不能在SQL语句中引用,甚至嵌入到 PL/SQL 代码中的那些 .

当您创建对象类型或其他模式级别的类型定义(例如嵌套表)时,它可以在 SQL 和 PL/SQL 中使用。作为一个非常简单的示例,您可以将表定义基于对象定义:

SQL> CREATE OR REPLACE TYPE "TYPE_NAME1" AS OBJECT
2 (
3 temp_trans_id number(10),
4 trans_id number(10),
5 resion_id number(10)
6 )
7 /

Type created.

SQL> create table type_name1_tab of type_name1;

Table created.

SQL> desc type_name1_tab
Name Null? Type
----------------------------------------- -------- ----------------------------
TEMP_TRANS_ID NUMBER(10)
TRANS_ID NUMBER(10)
RESION_ID NUMBER(10)

See here有关 CREATE TYPE 语句的文档以及对有关对象类型的各种用途的进一步文档的引用。

关于sql - oracle "create or replace type"和 "type type_name is..."语法有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1671466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com