oracle - 如何在oracle中创建函数,我们可以在任何地方使用这个函数的结果

标签 oracle

CREATE TABLE TEMP 
(
  ID VARCHAR2(20 CHAR) 
, TXT CLOB 
) 


create or replace FUNCTION get_field_keys (field CLOB)
  RETURN  type_array_of_varchar2
IS
  return_value  type_array_of_varchar2;
BEGIN
  //do some split operations(already done)
  //return_value[] = 'a';
  //return_value[] = 'b';
  //return_value[] = 'c';
  //..
  return return_value;
END;

这个函数必须有返回值,我们可以做到

select * from TEMP where 'a' = ANY(get_field_keys(TXT))

函数 get_field_keys 的返回值必须是 varchar2 的集合,我试过 varray,但“ANY”无法通过这种方式工作。一定是录音什么的。

最佳答案

由于您的函数似乎返回一个 TABLEVARRAY 类型,您可以在取消嵌套表达式中使用它:

SELECT * FROM temp WHERE 'a' IN (SELECT * FROM TABLE(get_field_keys(TXT))

我不确定这是否也适用于 ANY 量词,但无论您使用 ANY 还是 ,这对您的目标都没有关系在

关于oracle - 如何在oracle中创建函数,我们可以在任何地方使用这个函数的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12890535/

相关文章:

sql - 如何确定和设置 Oracle 查询中的并行度

SQL查询以获取当前和去年的销售额

java - SQLException.getErrorCode 和 SQLCODE

php - 对不同(但相似)的业务程序使用不同的表是一种好习惯吗?

oracle - 如何在 Oracle 中的数据集上链接计算和转换 block ?

sql - 如何查询最近5分钟的记录?

java - Oracle/OJDBC BLOB 在不存在的行上更新问题?

mysql - 数据库规范化设计问题 : 2 tables sharing almost the same information

ruby-on-rails - rails : constraint violation on create but not on update

sql - Pro*C Oracle——循环获取 sql