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

相关问题