我正在 pl/sql 程序中撰寫動態查詢,我想在其中基于字串比較操作檢索記錄。我將字串存盤在一個變數中,我想在查詢中使用它。
x:='A';
select * from table_name where category like 'A%SITE';
我想以某種方式將上述內容轉換為動態查詢并將變數 x 替換為 'A%SITE' 中的 A,但我不知道該怎么做。
uj5u.com熱心網友回復:
使用字串連接:
DECLARE
x VARCHAR2(20);
cur SYS_REFCURSOR;
BEGIN
x := 'A';
OPEN cur FOR
select *
from table_name
where category like x || '%SITE';
-- Do something with the cursor.
END;
/
db<>在這里擺弄
關于你的評論:
EXECUTE IMMEDIATE 'select * from table_name where category like x || '%SITE''
您需要通過將引號加倍來轉義引號,并且您可能還想使用系結變數(以防止 SQL 注入攻擊):
EXECUTE IMMEDIATE
'select * from table_name where category like :1 || ''%SITE'''
USING x;
但是,該查詢中沒有任何內容需要動態 SQL,如果您使用游標(根據我上面的示例)或使用SELECT ... [BULK COLLECT] INTO.
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/472537.html
