【发布时间】:2023-04-01 06:38:01
【问题描述】:
我正在尝试动态构造查询,但在字符串连接之后,select 语句在 pl/sql 中没有产生任何结果。
请帮帮我
DECLARE
person_id NUMBER;
BEGIN
DECLARE
age_where VARCHAR2(100 CHAR);
TEMP_WHERE VARCHAR2(100 CHAR) := '';
add_temp_where BOOLEAN := true;
begin
age_where := q'[ and age=28]';
IF(ADD_TEMP_WHERE) THEN
TEMP_WHERE := age_where;
END IF;
SELECT id INTO person_id FROM PERSON WHERE name = 'David' || TEMP_WHERE ;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('no data');
END;
DBMS_OUTPUT.PUT_LINE('result : ' || person_id);
END;
表格条目
ID NAME AGE ADDRESS SALARY
-----------------------------------------------
1 David 28 PURAM 30000
2 Vimal 30 MARUR 20000
输出:
anonymous block completed
no data
result :
【问题讨论】:
-
您必须使用
execute immediate来运行动态 SQL。还有一个 hint 使用 bind variables 而不是谓词字符串连接。
标签: oracle plsql concatenation