儲存過程動態引數

2021-05-27 01:06:01 字數 996 閱讀 7097

create or replace procedure testdynamicparams(p_cmbno      in varchar2,

p_trade_date in varchar2) is

cursor testcursor is

select cmbno, trade_date, securno, turnover

from *** t

where 1 = 1 and

((p_cmbno is null) or (t.cmbno = p_cmbno)) and

((p_trade_date is null) or

(t.trade_date = p_trade_date));

v_testcur testcursor%rowtype;

begin

open testcursor;

loop

fetch testcursor

into v_testcur;

exit when testcursor%notfound;

dbms_output.put_line(v_testcur.cmbno || '-------' ||

v_testcur.securno || '--------' ||

v_testcur.turnover);

end loop;

close testcursor;

end testdynamicparams;

說明:當p_cmbno = null時,where 後面是1=1 and p_cmbno is null

當p_trade_date = null && p_cmbno = null時就是1=1 and p_cmbno is null and p_trade_date is null

如果都不為null,就是1=1 and t.cmbno = p_cmbno and t.trade_date = p_trade_date;

儲存過程動態匹配引數

之前在寫儲存過程遇到的乙個事情,記錄一下 儲存過程需要接收五個引數,這五個引數是在同一條sql中,並且每乙個引數不一定會存在值,如果當前的這個值不存在的時候不進行where條件的匹配 按照以往的做法都是先把原來的sql先用變數進行接收,然後用if條件再進行匹配,當這個引數符合我們的條件時候繼續拼接到...

mysql儲存過程動態引數查詢

1 動態sql,即動態引數 在儲存過程中,想要直接用表名變數做引數,動態執行sql,不能直接寫 12 3456 7createprocedure tablenamechar 20 begin select fromtablename end mysql 不支援表名作為變數,這樣會直接將變數名 tab...

Mysql 儲存過程處理動態引數

刪除 drop procedure if exists up common select 建立 create procedure up common select in t name varchar 50 begin declare v sql varchar 500 set v sql conca...