2015-10-20 51 views
2

如何動態地在查詢中傳遞IN變量。示例如下(使用oracle db): 我想檢查num_pattern模式是否與CALLNUM匹配。輸入參數在查詢存儲過程中傳遞

create or replace PROCEDURE EXECUTE_CDIV 
( 
    CALLNUM IN VARCHAR2, 
    RESULT OUT VARCHAR2 
) 
AS 
BEGIN 
    select count(1) into RESULT 
     from datatable 
     where num_pattern like 'CALLNUM%' ; 
END; 
+1

剛剛嘗試這一點'...在那裏同樣CALLNUM || '%'' –

回答

0

你可以嘗試這樣的:

select count(*) into RESULT from datatable 
where num_pattern like CALLNUM||'%' 
+0

它可以更好地使用'RESULT',而不是'CNT' num_pattern,貌似還有作者查詢錯誤,只是猜測 –

+0

@ agent5566: - 是的,我已經更新爲'*'而不是'1'。 –

+0

我的意思是'select count(*)into RESULT' –

0

如果可以,爲什麼不使用REGEXP_LIKE,而不是像這樣,你不需要把那個%在query..also它的功能更強大比LIKE操作

create or replace PROCEDURE EXECUTE_CDIV 
( 
    CALLNUM IN VARCHAR2, 
    RESULT OUT VARCHAR2 
) 
AS 
BEGIN 
    select count(1) into RESULT 
     from datatable 
     where regexp_like(num_pattern, CALLNUM); 
END; 
/

參考文檔,你可以把更多的選擇,如果這方面的需求是區分大小寫的搜索... https://docs.oracle.com/cd/B12037_01/server.101/b10759/conditions018.htm

http://www.techonthenet.com/oracle/regexp_like.php

http://www.sqlsnippets.com/en/topic-11741.html

相關問題