如何根據if else語句在oracle中創建動態sql。Oracle中的動態sql
sql:= 'select n from where a = p_a';
if p_b is not null then
sql:= 'select n from where a = p_a and b = p_b';
如何根據if else語句在oracle中創建動態sql。Oracle中的動態sql
sql:= 'select n from where a = p_a';
if p_b is not null then
sql:= 'select n from where a = p_a and b = p_b';
爲什麼只要執行以下操作即可獲得動態SQL?
select n
from xx
where a = p_a and (b = p_b or p_b is null);
@Gondon感謝您的幫助,但需要我concatane sql query.This查詢不起作用。 –
@GoranZooferic它適合你嗎?你得到什麼錯誤? –
Maheswaran請原諒我。我不再看。我找到不同的解決方案。再次感謝。 –
例子:
CREATE TYPE t_emp AS OBJECT (id NUMBER, name VARCHAR2(20))
/
CREATE TYPE t_emplist AS TABLE OF t_emp
/
CREATE TABLE dept_new (id NUMBER, emps t_emplist)
NESTED TABLE emps STORE AS emp_table;
INSERT INTO dept_new VALUES (
10,
t_emplist(
t_emp(1, 'SCOTT'),
t_emp(2, 'BRUCE')));
DECLARE
deptid NUMBER;
ename VARCHAR2(20);
BEGIN
EXECUTE IMMEDIATE 'SELECT d.id, e.name
FROM dept_new d, TABLE(d.emps) e -- not allowed in static SQL
-- in PL/SQL
WHERE e.id = 1'
INTO deptid, ename;
END;
/
您可以將您自己的邏輯根據要 Reference
的'執行immediate'聽到這個條件來構建你的命令? – Rachcha