2015-10-20 78 views
0

我有一個表名爲DATA_TABLE存儲過程模式匹配

我的存儲過程:

create or replace 

PROCEDURE EXECUTE_CPROC  
( 
    CALLNUM IN VARCHAR2, 
    RESULT OUT VARCHAR2 
) 
AS  
vara_val NUMBER(1) ;  
varb_val NUMBER(1) ; 
BEGIN 

    select a_val,b_val into vara_val, varb_val 
    from DATA_TABLE 
    where NumberPattern like CALLNUM ||'%' ; 

END 

============

  • 現在,如果CALLNUM是0335412,然後在DATA_TABLENumberPattern 03354應該匹配。

  • 如果CALLNUM是033111那麼在DATA_TABLENumberPattern 033應該匹配。

所以需要修改用SP寫的查詢。

============

表名:DATA_TABLE

色譜柱:

  1. NumberPattern(VARCHAR2):033,03354

  2. a_val(整數):1,2

  3. b_val(整數):1,2

+0

讓我知道如果問題您有任何疑問 – VJS

+1

我沒有在您的查詢中看到表'DATA_TABLE'?表DATA_TABLE如何適合存儲過程,以及它如何與其他表「cdiv_service_activation」,「vara_val」,「varb_val」相關? –

+1

但'03354'LIKE'0335412%'爲false;它應該是'0335412'LIKE'03354%'。因此:'在哪裏CALLNUM像NumberPattern || '%''。除此之外,我不明白這個問題。有'RESULT',你沒有填寫,'vara_val'和'varb_val',你填寫但沒有返回。那麼你的問題實際上是什麼? –

回答

0

您的查詢應該是

select a_val, b_val 
    into vara_val, varb_val 
    from DATA_TABLE 
    where CALLNUM LIKE NumberPattern || '%'; 

你有CALLNUMNumberPattern查詢逆轉。

祝你好運。

+0

是的,我認爲這是寫不正確的:where CALLNUM LIKE NumberPattern || '%'; 。我的理解是在哪裏應該是專欄名稱。 – VJS

+0

謝謝,,,,,,,,,,,, – VJS

+0

我在這面臨一個問題。在我的電話號碼CALLNUM是03354123然後我得到2結果。 1)03354123像033%2)03354123像03354%。兩者都是真實的,所以得到2個結果我想只有03354123這樣的03354%應該回報。我的意思是最大匹配模式。你能幫忙嗎? – VJS