用oracle procedure儲存過程實現自表(列存在null)查詢不等於輸入引數的記錄
---某同事想實現自儲存過程實現一功能,其中表的條件不等於儲存過程的引數,因為表中的列值可能為空,這兒有些小特殊,如
--不特殊處殊,要麼多提取記錄,要麼未提取記錄,要麼少提取記錄,測試如下供備記
SQL> select * from t_comp;
A B
---------- ----------
string1
a string2
c string3
SQL> desc t_comp;
Name Type Nullable Default Comments
---- ------------ -------- ------- --------
A VARCHAR2(10) Y
B VARCHAR2(10) Y
SQL>
SQL> create or replace procedure proc_not_like(in_a varchar2)
2 as
3 v_cnt pls_integer;
4 begin
5 select count(nvl(a,0)) into v_cnt from t_comp where dump(a)!=dump(in_a);
6 dbms_output.put_line(v_cnt);
7 end;
8 /
Procedure created
SQL> exec proc_not_like(NULL);
2
PL/SQL procedure successfully completed
SQL> exec proc_not_like('A');
3
PL/SQL procedure successfully completed
SQL> exec proc_not_like('a');
2
PL/SQL procedure successfully completed
SQL> exec proc_not_like('b');
3
PL/SQL procedure successfully completed
SQL> exec proc_not_like('');
2
PL/SQL procedure successfully completed
SQL>
--不特殊處殊,要麼多提取記錄,要麼未提取記錄,要麼少提取記錄,測試如下供備記
SQL> select * from t_comp;
A B
---------- ----------
string1
a string2
c string3
SQL> desc t_comp;
Name Type Nullable Default Comments
---- ------------ -------- ------- --------
A VARCHAR2(10) Y
B VARCHAR2(10) Y
SQL>
SQL> create or replace procedure proc_not_like(in_a varchar2)
2 as
3 v_cnt pls_integer;
4 begin
5 select count(nvl(a,0)) into v_cnt from t_comp where dump(a)!=dump(in_a);
6 dbms_output.put_line(v_cnt);
7 end;
8 /
Procedure created
SQL> exec proc_not_like(NULL);
2
PL/SQL procedure successfully completed
SQL> exec proc_not_like('A');
3
PL/SQL procedure successfully completed
SQL> exec proc_not_like('a');
2
PL/SQL procedure successfully completed
SQL> exec proc_not_like('b');
3
PL/SQL procedure successfully completed
SQL> exec proc_not_like('');
2
PL/SQL procedure successfully completed
SQL>
小結:1,採用dump函式,轉換處理
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-753498/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle儲存過程procedure輸入引數為空_如果顯示錶列不為 null的記錄Oracle儲存過程Null
- oracle父儲存過程呼叫子儲存過程procedure與輸出引數Oracle儲存過程
- oracle procedure儲存過程輸入引數用於sql like模糊匹配2演算法Oracle儲存過程SQL演算法
- 查詢多張表記錄數的儲存過程儲存過程
- Oracle帶輸入輸出引數的儲存過程Oracle儲存過程
- oracle儲存過程procedure_輸入引數varchar2與char報錯Oracle儲存過程
- oracle procedure 儲存過程輸入及輸出in out示例Oracle儲存過程
- SQL Server-儲存過程(Procedure),帶入引數和出引數SQLServer儲存過程
- oracle procedure儲存過程輸入引數之動態sql傳入(括號及,逗號的特殊處理Oracle儲存過程SQL
- 帶輸出引數的儲存過程儲存過程
- [Procedure]Oracle之分頁儲存過程Oracle儲存過程
- Oracle 基礎 ----procedure(儲存過程)Oracle儲存過程
- mysql 儲存過程 procedure 批次建表MySql儲存過程
- oracle procedure輸入引數為date日期小記Oracle
- oracle實驗記錄 (storage儲存引數(1))Oracle
- oracle實驗記錄 (storage儲存引數(2))Oracle
- 使用帶有輸出引數的儲存過程儲存過程
- Java呼叫儲存過程(帶輸出引數)Java儲存過程
- 在sqlplus中呼叫in out輸入輸出引數的儲存過程SQL儲存過程
- C#中呼叫SQL儲存過程(帶輸入輸出引數的例子)C#SQL儲存過程
- 儲存過程輸入引數型別定義引起的問題儲存過程型別
- MySQL入門--儲存過程(PROCEDURE)和儲存函式(FUNCTION)MySql儲存過程儲存函式Function
- SQL 建立儲存過程PROCEDURESQL儲存過程
- dos下呼叫帶輸出引數的儲存過程儲存過程
- mysql儲存過程的引數MySql儲存過程
- 用.NET呼叫oracle的儲存過程返回記錄集 (轉)Oracle儲存過程
- oracle儲存過程(procedure)中執行動態SQL小記Oracle儲存過程SQL
- 如何查詢儲存過程procedure所依賴物件的有效性--dba_dependencies儲存過程物件
- 輸入表名後自動生成sqlldr控制檔案儲存過程SQL儲存過程
- jdbctemplate呼叫儲存過程傳遞陣列引數JDBC儲存過程陣列
- .NET用使用儲存過程獲取輸出引數的程式碼示例!儲存過程
- 儲存過程模糊查詢(like)儲存過程
- 查詢當前資料庫存在某個字串的儲存過程資料庫字串儲存過程
- oracle儲存過程將引數字串分割sqlOracle儲存過程字串SQL
- ASP.NET中利用儲存過程實現模糊查詢ASP.NET儲存過程
- PL/SQL 05 儲存過程 procedureSQL儲存過程
- 在Oracle中查詢儲存過程和函式Oracle儲存過程函式
- JAVA + Oracle儲存過程返回查詢結果集JavaOracle儲存過程