SOURCE 列の下のビュー i には、次の値があります。
SRC - TERM - randomtext - LOCATION (ソース列の形式に関する参考情報)
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;
したがって、基本的には、文字列の MIDDLE ( inSource
) の最後の単語と最後から 2 番目の単語の間に、常にパーセント記号を挿入する必要があります。手動で文字列に入れることができるため、クエリで実行できましたが、実際のストアドプロシージャでは、文字列を操作する方法がわかりません。