Oracle 如何在单引号sql查询中使用管道?

Oracle 如何在单引号sql查询中使用管道?,oracle,plsql,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 但是,当我在如下所示的包中使用相同的查询时,我

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

例如,当我使用此代码时

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
但是,当我在如下所示的包中使用相同的查询时,我遇到了一个错误,谁能帮助我如何在单引号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';
工作原理如下:

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已创建

选择f.id,f.SOURCE | |'-'| | a.TITLE作为系统,从T1 f左连接t2a ON f.SOURCE=a.code

PL/SQL过程已成功完成

表T1已删除

表T2已删除


你犯了什么错误?你能展示一下你是如何使用这个字符串的吗?你展示的结构看起来不错。