В представлении i под столбцом SOURCE у меня следующие значения.Восстановить строку для хранимой процедуры Oracle
SRC - TERM - randomtext - РАСПОЛОЖЕНИЕ (Просто FYI на формат столбца источника)
ABC DE RANDOMJIBBERISH MORE RANDOMJIBBERISH FORWARD
ARY HES RANDOMJIBBERISH MORE RANDOMJIBBERISH BACKWARD
IGHE UER RANDOMJIBBERISH MORE RANDOMJIBBERISH LEFT
Теперь у меня есть запрос, который необходимо для поиска на этой точке зрения на основе источника. Это прекрасно работает.
SELECT
t.DATE_, t.PX_LAST
FROM
THIS.TABLE_NEW t
WHERE
t.DATE_ >= '2003-03-02'
AND t.DATE_ <= '2013-03-02'
AND t.SOURCE LIKE 'ABC DE % FORWARD' --Where the magic happens
AND t.SOURCE LIKE '%'||'1M'||'%'
AND t.PX_LAST is NOT NULL
ORDER BY
t.DATE_ ASC;
Теперь проблема, когда я пытаюсь осуществить это в хранимой процедуре, мне нужно будет вставить знак процента в параметрах, которые я получаю. Это не работает, особенно та часть, где он ищет источник по inSource
PROCEDURE Get_It
(
inSource VARCHAR2,
inStartDate DATE,
inEndDate DATE,
inLength VARCHAR2,
inRC1 OUT SYS_REFCURSOR
) AS
BEGIN
OPEN inRC1 FOR
SELECT t.DATE_, t.PX_LAST
FROM THIS.TABLE_NEW t WHERE
t.DATE_ >= inStartDate
AND t.DATE_ <= inEndDate
AND t.SOURCE LIKE inSource --Where the magic needs to happen
AND t.SOURCE LIKE '%'||length||'%'
AND t.PX_LAST is NOT NULL
ORDER BY t.DATE_ ASC;
END GET_IT;
Поэтому в основном мне нужно вставить знак процента в середине строки (inSource
), между последним и вторым последнее слово, всегда. Я смог сделать это в запросе, потому что я могу вручную поместить его в строку, но в фактической хранимой процедуре я не знаю, как я могу манипулировать строкой.
«Это не работает» не является допустимым сообщение об ошибке. Вам нужно быть более явным. То, что у вас есть, работает (если вы используете 'inLength' скорее в' length', как отметил @smokeyrobot), но только если вы передаете 'inSource' как строку, включая'% ', и, похоже, это проблема, верно? Вы хотите перейти в '' ABC DE FORWARD'' и перевести процедуру на '' ABC DE% FORWARD''? Вы уверены, что всегда будет три слова, и вы хотите «%» в этой позиции? –