以 Table_name 作为输入并在 Oracle 中返回一个数字的函数

Posted

技术标签:

【中文标题】以 Table_name 作为输入并在 Oracle 中返回一个数字的函数【英文标题】:Function with Table_name as input and returns a number in Oracle 【发布时间】:2015-10-26 18:58:01 【问题描述】:

我有一个函数,它以 table_name 作为输入并返回一个数字。 该函数已正确编译,但由于某种原因,当我尝试测试该函数时它会抛出错误 - 缺少关键字。

CREATE OR replace FUNCTION TEST_FUNCTION (name_table IN VARCHAR2) RETURN NUMBER

        IS         

          rday NUMBER;                
  BEGIN 

  execute immediate 
  'select day_i into rday
                FROM ' || name_table || '
                WHERE day_i = 1 and rownum = 1';

   return rday;

  END TEST_FUNCTION;

这就是我测试它的方式Select TEST_FUNCTION ('FDR_REP') from dual;

【问题讨论】:

【参考方案1】:

对于 into 子句,execute immediate 的语法是不同的 试试

CREATE OR replace FUNCTION TEST_FUNCTION (name_table IN VARCHAR2) RETURN NUMBER

        IS         

          rday NUMBER;                
  BEGIN 
   execute immediate  'select day_i 
                FROM ' || name_table || '
                WHERE day_i = 1 and rownum = 1' into rday;


   return rday;

  END TEST_FUNCTION;

【讨论】:

以上是关于以 Table_name 作为输入并在 Oracle 中返回一个数字的函数的主要内容,如果未能解决你的问题,请参考以下文章

Oracl基础知识

卸载oracl

搜索以数字结尾的表

通过 Ajax 传递对象数组并在控制器(Laravel)中作为输入

循环遍历目录一层,并在该目录中以目录名作为参数执行脚本

使用 Oracle 表作为输入参数编写 Oracle 存储过程