Как использовать трубу в одиночном цитируемом SQL-запросе? - PullRequest
0 голосов
/ 05 марта 2019

У меня есть пакет с кодом, показанным ниже,

Например, когда я использую этот код,

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

im, получая результаты ниже,

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

Но когда я использую тот же запрос в пакете, как показано ниже, я получаю сообщение об ошибке. Может ли кто-нибудь помочь мне, как использовать pipe в запросе 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 голосов
/ 05 марта 2019

Работает так:

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 ВЛЕВО СОЕДИНЯЕТ T2 a ON f.SOURCE = a.code;

Процедура PL / SQL успешно завершена.

Таблица T1 удалена.

Таблица T2 удалена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...