输入参数传递查询存储过程

时间:2015-10-20 07:09:38

标签: oracle stored-procedures

如何动态地在查询中传递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;

2 个答案:

答案 0 :(得分:0)

您可以尝试这样:

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

答案 1 :(得分:0)

如果可用,为什么不使用REGEXP_LIKE而不是类似的,这样你就不需要在查询中添加%..而且它比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