`

使用oracle 的table function 需要注意的地方

阅读更多
DECLARE
    -- 定义联合数组的类型(session-level)
    TYPE ASSOCIATIVE_ARRAYS_TYPE IS TABLE OF VARCHAR2(10) INDEX BY BINARY_INTEGER;
    -- 定义联合数组
    associative_arrays ASSOCIATIVE_ARRAYS_TYPE;
    -- 定义嵌套表的类型(schema-level)
    TYPE LOCAL_NESTED_TABLE_TYPE IS TABLE OF VARCHAR2(10);
    -- 定义嵌套表
    local_nested_table LOCAL_NESTED_TABLE_TYPE;
    -- 定义嵌套表(其中NESTED_TABLE_TYPE是schema-level的)
    nested_table       NESTED_TABLE_TYPE;
    
BEGIN
    -- 会报ora-00902错误
    FOR c IN (SELECT *
                FROM TABLE(CAST(associative_arrays AS ASSOCIATIVE_ARRAYS_TYPE))) LOOP
        NULL;
    END LOOP;
    -- 会报ora-00902错误
    FOR c IN (SELECT *
                FROM TABLE(CAST(local_nested_table AS LOCAL_NESTED_TABLE_TYPE))) LOOP
        NULL;
    END LOOP;
    -- 编译通过
    FOR c IN (SELECT *
                FROM TABLE(CAST(nested_table AS NESTED_TABLE_TYPE))) LOOP
        NULL;
    END LOOP;
END;


总结:使用表函数的时候,它的类型必须是schema级别的;而联合数组是session级别的,不能在表函数中使用。
分享到:
评论

相关推荐

    oracle_function用法

    * 不能使用 PL/SQL 的特有数据类型(boolean, table, record 等) * 不能在 SQL 语句中包含 INSERT, UPDATE 和 DELETE 语句 函数语法 Oracle 函数的语法如下: `CREATE OR REPLACE FUNCTION function_name (argu1...

    oracle function 返回结果集

    ### Oracle Function 返回结果集 #### 知识点概述 在Oracle数据库中,有时我们需要创建一个函数来返回一个结果集(即一系列记录),而非单一值。本文档中的代码示例展示了如何定义一个返回自定义表类型的函数`Ns_...

    oracle 用表结构创建 type

    在Oracle数据库环境中,使用现有的表结构来创建Type是一种常见的需求,尤其当涉及到复杂的数据类型时。根据提供的文件信息,本文将详细介绍如何利用Oracle中的表结构自动生成Type,并深入探讨其中涉及的关键概念和...

    oracle-function--api.zip_oracle_oracle API_oracle sql api

    Oracle数据库是世界上最广泛使用的数据库系统之一,其强大的功能和丰富的API为开发者提供了高效的数据管理和处理能力。本资料“oracle-function--api.zip”包含了Oracle数据库中的一些核心API和SQL函数,特别是针对...

    oracle 存储过程 函数 dblink

    在这段Java代码中,我们使用了`CallableStatement`来调用Oracle存储过程`TESTA`。关键点包括: - `prepareCall`方法用于准备调用存储过程。 - 使用`setString`方法设置输入参数的值。 - 调用`execute`方法执行存储...

    Oracle中实现Split函数功能

    这个函数使用了 Oracle 的管道化函数(pipelined function)来返回拆分后的结果。函数内部使用了一个循环来拆分字符串,每次循环都会将拆分后的结果返回给调用者。 最后,我们可以使用这个函数来拆分字符串。例如,...

    ORACLE转DB2对照全解

    **注意:** Oracle使用`RETURNING`子句来获取更新后的值,而DB2则需要使用`FETCH`语句来实现。 #### 十五、查询DUAL **Oracle:** ```sql SELECT 1 FROM DUAL; ``` **DB2:** ```sql SELECT 1 FROM SYSIBM....

    oracle转DB2 对照

    - 注意点: Oracle使用 `EXECUTE IMMEDIATE` 执行动态SQL,而DB2则需要先使用 `PREPARE` 准备SQL,然后再执行。 #### 3. 游标转换 - **Oracle** 和 **DB2** 都支持游标,但语法有所不同。 - Oracle示例: ```sql ...

    hibernate 调用oracle函数

    4. **定义Hibernate Native SQL查询**:由于Hibernate默认不支持调用存储过程或函数,我们需要使用`@NamedNativeQuery`或`@SqlResultSetMapping`注解来定义一个原生SQL查询,用于调用Oracle函数。例如: ```java @...

    Oracle的表结构转成Mysql的表结构

    - **数据类型转换**:Oracle中的`DATE`和`TIMESTAMP`类型会被转换为MySQL中的`DATETIME`类型,需要注意精度问题。 - **NUMBER类型的处理**:超大的`NUMBER`类型会直接转换为`BIGINT`,需要注意可能的精度损失。 - **...

    oracle通过sql实现字符串转数字oracle函数

    在Oracle数据库中,将字符串转换为数字是一项常见的操作,特别是在处理包含数字的字符串列时,可能需要进行数值计算或按照数值大小进行排序。本篇文章将深入探讨如何在SQL查询中利用Oracle提供的函数来实现这一目标...

    oracle sql of extracting table structure

    * Function : to extract the structure of a table * * Author : Richard Wang * * Date : 2011-08-30 * * Version : 0.1 * ------------------------------------------------------------------------------*/ ...

    Oracle存储过程实例使用显示游标

    在Oracle数据库中,存储过程是预编译的SQL和PL/SQL代码集合,它们可以执行特定的任务并提高数据库性能。游标是处理单行或多行数据集的一种机制,允许...在实际应用中,还需要注意优化游标操作,避免不必要的性能开销。

    oracle农历解决方案

    Oracle数据库本身并不内置农历日期转换的功能,但通过创建自定义函数和使用特定的算法,可以实现从农历到阳历的转换。以下是一个基于给定文件中的方法来解决这个问题的详细步骤: 1. 创建年份编码表 首先,我们需要...

    oracle SQL语法大全

    最后,Oracle SQL还支持存储过程和函数,它们是预编译的SQL和PL/SQL代码块,可以重复使用并执行复杂的业务逻辑。DECLARE, BEGIN, END关键字用于定义PL/SQL块,PROCEDURE和FUNCTION分别用于创建过程和函数。 总的来...

    ORACLE根据某一列的值修改另一列的值

    * 在 Oracle 数据库中,我们可以使用 CREATE TABLE 语句来创建数据表。例如,创建学生信息表 t_student 和成绩表 t_performance。 * 数据表中每个列都有其自己的数据类型,例如学生 ID 为 NUMBER,学生姓名为 ...

    oracle的开发需要的sql语句集锦

    `:在Oracle 12c及以后版本,使用FETCH FIRST ROWS ONLY实现分页。 8. **游标(Cursor)**: - 在PL/SQL中,游标用于逐行处理查询结果,提高代码可读性和效率。 9. **存储过程(Stored Procedures)与函数...

    oracle到sqlserver存储过程语法转换

    ### Oracle到SQL Server存储过程...在进行数据库迁移时,开发者需要仔细分析现有的Oracle存储过程,然后根据SQL Server的语法特点进行相应的转换。此外,还应考虑到性能优化等问题,确保迁移后的应用程序能够高效运行。

    Oracle和SqlServer语法区别

    PL/SQL函数和过程可以使用Oracle的函数和过程语法来编写,而Transact-SQL函数和过程则需要使用SqlServer的函数和过程语法。 例如,Oracle的PL/SQL函数可以这样编写: ```plsql CREATE OR REPLACE FUNCTION get_...

Global site tag (gtag.js) - Google Analytics