从选择返回值到函数

Posted

技术标签:

【中文标题】从选择返回值到函数【英文标题】:Return value from select into Function 【发布时间】:2018-02-06 10:51:00 【问题描述】:

我想编写从选择返回值的函数:

Function Test
IS
   my_select varchar2(200):='select colA from tableA where colB = '||const||'';
BEGIN    
   return my_select;
END;

它将选择作为字符串返回。我应该使用“into”吗?

或者也许可以做类似的事情:

..
return 'select colA from tableA where colB = '||const||'';
..

【问题讨论】:

听起来你可能想要一个引用光标。 【参考方案1】:

由于您正在使用Oracle 12c,您可以在ProcedureWITH 子句中使用RETURN_RESULT 等新功能,并使用function。见下文:

使用Procedure:

CREATE OR REPLACE PROCEDURE Test (p_value in varchar2)
AS
  job_cursor SYS_REFCURSOR;

BEGIN
   OPEN job_cursor FOR
   select colA from tableA where colB = p_value;

   DBMS_SQL.RETURN_RESULT(job_cursor);
END;

With 子句中使用函数:

WITH
  Function Test (p_value in varchar2) return sys_refcursor
  IS
   ret_cur sys_refcursor;
   BEGIN    
      Open ret_cur for select colA from tableA where colB = p_value;
   return ret_cur;
  END ;
SELECT Test ('ABC') ---passing Input to function
FROM  DUAL;

【讨论】:

还有一个@XING - 如果程序在包内并且“p_value”被声明为全局常量,如何使用它? @4est ..对不起,我不明白你想做什么。也许您可以发布一个包含您正在尝试做的所有事情的问题。 如果在包体的某个地方我得到了这样的结果:p_value CONSTANT varchar2(30) := 'city2'....所以我不想传递 p_value 但使用我的 CONSTANT @4est 所以在这种情况下你可以把它写成PROCEDURE Test (p_value in varchar2 DEFAULT 'city2'。您不能使用相同的名称 p_value 进行输入。或者你可以把它写成PROCEDURE Test (p1_value in varchar2 DEFAULT p_value【参考方案2】:

我会使用引用光标来执行此操作,如下所示:

Function Test (p_value in varchar2)
return sys_refcursor
IS
   ret_cur sys_refcursor;
BEGIN    
   Open ret_cur for select colA from tableA where colB = p_value;

   return ret_cur;
END test;

请注意,在您的情况下不需要动态 sql;你可以简单地绑定值。

【讨论】:

【参考方案3】:

也许下面的这个例子可以告诉你如何解决它。 我更喜欢使用游标和记录。

CREATE OR REPLACE Test (vColB IN TableA.ColB%TYPE)
RETURN TableA.ColA%TYPE
AS
    CURSOR cTableA IS
        SELECT ColA FROM TableA WHERE ColB = vColB;
    rTableA cTableA%ROWTYPE;
BEGIN
    OPEN cTableA;
    FETCH cTableA INTO rTableA;
    CLOSE cTableA;

    RETURN rTableA.ColA;
END;
/

【讨论】:

以上是关于从选择返回值到函数的主要内容,如果未能解决你的问题,请参考以下文章

Python - 从函数返回多个值到不同的数组

使用 Node.JS 从一个函数返回值到另一个函数

PHP - 提交日期/时间/从foreach循环中选择输入值到$ _POST不返回任何内容

PHP返回值到div值

如何从这个程序返回多个值到 API 主机服务器

从 javascript onclick 返回值到变量或使用 onclick 更改全局变量