2015-10-20 60 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