0
我正在準備存儲過程,並使用多個內部聯接和相同的表,其中在每個內部聯接中檢查了輸入參數值。我想消除特定的內部連接,如果輸入的參數爲空使用oracle存儲過程檢查輸入參數的空值
我正在準備存儲過程,並使用多個內部聯接和相同的表,其中在每個內部聯接中檢查了輸入參數值。我想消除特定的內部連接,如果輸入的參數爲空使用oracle存儲過程檢查輸入參數的空值
您將需要使用動態SQL來構建相應的查詢參數如下:
PROCEDURE myproc (p1 VARCHAR2) IS
l_sql LONG;
l_cursor SYS_REFCURSOR;
BEGIN
l_sql := 'SELECT a, b, c FROM table1';
IF p1 IS NOT NULL THEN
l_sql := l_sql || ' JOIN table2 ON table2.x = table1.x';
END IF;
l_sql := l_sql || ' WHERE table1.y = :bind1';
OPEN l_cursor FOR l_sql USING 123;
...
END;