如何将变量传递给Oracle存储过程中的查询?

时间:2015-08-06 11:25:08

标签: oracle stored-procedures

我编写了一个简单的oracle存储过程来使用SYS_REFCURSOR获取一些数据。在我的查询中,我有一个WHERE子句。我想将参数传递给where子句。这就是我试过的,

CREATE OR REPLACE PROCEDURE GETCUSTOMER(customer_code IN CUSTOMER.CUSTOMER_CODE%TYPE, customer_names OUT SYS_REFCURSOR)
 IS
BEGIN

OPEN customer_names FOR
SELECT
  *
FROM CUSTOMER
WHERE CUSTOMER_CODE = customer_code;

END;
/

我使用spring jdbcTemplate执行了此操作。这没有按预期工作。这将获取CUSTOMER表中的所有数据。

是否有将参数传递给WHERE子句的特殊方法?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

只需在变量前加上过程名称。

CREATE OR REPLACE PROCEDURE GETCUSTOMER(customer_code IN CUSTOMER.CUSTOMER_CODE%TYPE, customer_names OUT SYS_REFCURSOR)
 IS
BEGIN

OPEN customer_names FOR
SELECT
  *
FROM CUSTOMER
WHERE CUSTOMER_CODE = GETCUSTOMER.customer_code;

END;
/