Oracle -连接字符串作为列名

bvjveswy  于 2022-12-11  发布在  Oracle
关注(0)|答案(1)|浏览(240)

我正在尝试连接用作列名的字符串
我想做的事情如下:

Select someData as "ONE" || :someVariable) from sometable;

其中someVariable是一个绑定变量,不能用双引号括起来。(如果为someVariable = 2018,则列的名称应为"ONE2018"。)
我试过用单引号和concat函数,但是没有用,有什么办法可以做到吗?
编辑:灵感来自littlefoots的答案,我尝试

declare
  customVariable number(4);
  rc sys_refcursor;
begin
  open rc for 'select 1 as bla' || :customVariable || ' from dual';
  dbms_sql.return_result(rc);
 end;
/

它的输出

BLA2018
----------
         1

我不知道如何将其放入PreparedStatement中,但如果单独使用,它会起作用,可能会帮助其他人

q8l4jmvw

q8l4jmvw1#

以下示例基于Scott的EMP表,该表包含名称以E开头的列:ENAMEEMPNO中的一个或多个。
您将传递NAMEMPNO并获得结果。

SQL> create or replace function f_one (par_column_name in varchar2)
  2    return sys_refcursor
  3  is
  4    l_rc sys_refcursor;
  5    l_str varchar2(200);
  6  begin
  7    l_str := 'select e' || par_column_name || ' from emp where rownum < 3';
  8    open l_rc for l_str;
  9    return l_rc;
 10  end;
 11  /

Function created.

SQL> select f_one('mpno') from dual;

F_ONE('MPNO')
--------------------
CURSOR STATEMENT : 1

CURSOR STATEMENT : 1

     EMPNO
----------
      7369
      7499

SQL> select f_one('name') from dual;

F_ONE('NAME')
--------------------
CURSOR STATEMENT : 1

CURSOR STATEMENT : 1

ENAME
----------
SMITH
ALLEN

SQL>

相关问题