如何在单引号的SQL查询中使用管道?

时间:2019-03-05 09:39:17

标签: oracle plsql

我有一个包含如下所示代码的软件包,

例如,当我使用此代码时,

SELECT f.ID,(f.source||'-'||A.TITLE) AS source_system FROM T1 f LEFT JOIN T2 a ON f.SOURCE = a.code;

即时通讯,结果低于预期

id  source_system 
14  X-Unified
14  R-Clarity
14  G-Complete
14  C-South
14  E-East

但是,当我在显示的belo之类的包中使用相同的查询时,我遇到了错误,有人可以帮助我如何在单引号的oracle查询中使用管道吗?

SEARCHSQL := 'SELECT ';
SEARCHSQL := SEARCHSQL ||  ' f.id,(f.SOURCE||''-''||a.TITLE) AS source_system FROM T1 f LEFT JOIN T2 a ON f.SOURCE = a.code';

1 个答案:

答案 0 :(得分:0)

像这样工作:

SET SERVEROUTPUT ON;

CREATE TABLE T1
(
    "SOURCE"   VARCHAR2 (4000),
    "ID"       VARCHAR2 (4000)
);

CREATE TABLE T2
(
    "CODE"    VARCHAR2 (4000),
    "TITLE"   VARCHAR2 (4000)
);

DECLARE
    SEARCHSQL   VARCHAR2 (4000);
BEGIN
    SEARCHSQL := 'SELECT ';
    SEARCHSQL :=
           SEARCHSQL
        || ' f.id,(f.SOURCE||''-''||a.TITLE) AS system FROM T1 f LEFT JOIN T2 a ON f.SOURCE = a.code';
    DBMS_OUTPUT.put_line (SEARCHSQL);

    EXECUTE IMMEDIATE SEARCHSQL;
END;

DROP TABLE T1;
DROP TABLE T2;

输出:

  

表T1已创建。

     

表T2已创建。

     

SELECT f.id,(f.SOURCE ||'-'|| a.TITLE)AS系统from T1 f左联接T2 a ON f.SOURCE = a.code;

     

PL / SQL过程成功完成。

     

表T1已删除。

     

表T2掉了。