Jus*_*ner 4 sql oracle types plsql
我是一个pl/sql新手.现在我有一个关于oracle 类型的问题.我看到有两种类型:
CREATE OR REPLACE TYPE "TYPE_NAME1" AS OBJECT
(
temp_trans_id number(10),
trans_id number(10),
resion_id number(10)
)
Run Code Online (Sandbox Code Playgroud)
要么
type new_type_name is record(
column1 number,
column2 varchar2(50)
);
variable_name new_type_name;
Run Code Online (Sandbox Code Playgroud)
有什么不同?十分感谢.
除了上一个答案之外,声明的范围也存在重大差异.
在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)
Run Code Online (Sandbox Code Playgroud)
有关 CREATE TYPE语句的文档以及有关对象类型的各种用法的进一步文档的参考,请参见此处.
| 归档时间: |
|
| 查看次数: |
11874 次 |
| 最近记录: |