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

标签 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 子句?我该如何解决这个问题?

最佳答案

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

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;
/

关于oracle - 如何将变量传递给 Oracle 存储过程中的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31854522/

相关文章:

sql-server - 将 SQL Server 存储过程结果与附加文本连接起来

mysql - 为什么我们可以使用 = 和 := both with set?

tsql - 没有参数调用需要参数的存储过程?

sql-server - 多表复杂实体的乐观并发

oracle - 程序缓冲区溢出

sql - 有没有办法否定 SQL 中的 WHERE 子句?

c# - ASP.NET : the connection is closed

bitbucket 管道中的 Oracle maven 依赖项

sql - Oracle 中的 CHECKSUM_AGG 等效项

mysql - 令人尴尬的简单 SQL 问题)