【发布时间】:2015-10-20 19:03:49
【问题描述】:
我有一个表名为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_TABLE表中NumberPattern03354 应该匹配。如果
CALLNUM是033111,那么在DATA_TABLE表中NumberPattern033 应该匹配。
所以需要修改SP写的查询。
============
表名:DATA_TABLE
列:
NumberPattern(varchar2) : 033, 03354a_val(整数):1, 2b_val(整数):1, 2
【问题讨论】:
-
如果您有任何疑问,请告诉我
-
我在您的查询中没有看到表
DATA_TABLE?表DATA_TABLE如何适合存储过程以及它与其他表cdiv_service_activation、vara_val、varb_val的关系如何? -
但是 '03354' LIKE '0335412%' 是假的;它应该是 '0335412' LIKE '03354%' 代替。因此:
where CALLNUM like NumberPattern || '%'。除此之外,我不明白这个问题。有RESULT,您不填写,还有vara_val和varb_val,您填写但不返回。那么你的问题到底是什么? -
@Mahmoud Gamal:抱歉,这是一个复制粘贴错误。现在已编辑查询。
-
@Thorsten Kettner :我在这方面面临一个问题。在我的电话号码中,CALLNUM 是 03354123,然后我得到 2 个结果。 1) 03354123 喜欢 033% 2) 03354123 喜欢 03354%。两者都是正确的,因此得到 2 个结果。我希望只有 03354123 像 03354% 应该返回。我的意思是最大匹配模式。你能帮忙吗
标签: sql oracle stored-procedures