gpt4 book ai didi

oracle - 使用 Spring jdbctemplate 调用 oracle 函数返回游标

转载 作者:行者123 更新时间:2023-12-02 02:14:16 25 4
gpt4 key购买 nike

您好,我正在使用 spring jdbctemplate 来调用一个接受整数输入的 oracle 函数。

Oracle function is :
FUNCTION get_key_types (type_id IN integer)
RETURN tcur_key_types_det
IS
lv_cur tcur_key_types_det;
BEGIN
IF type_id IS NULL
THEN
RAISE KEY_ERROR;
ELSE
OPEN lv_cur FOR
SELECT key_criteria_cd,
key_type_name,
KEY_COLUMN_TXT,
data_type_cd
FROM key_criteria
WHERE criteria_type_id = type_id
ORDER BY key_type_name;
END IF;
RETURN lv_cur;
END get_key_types;

我有一个从类 StoredProcedure 扩展的 Java 类,它传递整数参数来调用 oracle 函数,如下所示。

public class KeyTypeService extends StoredProcedure{
public KeyTypeService(DataSource dataSource,String sqlString) {
setDataSource(dataSource);
setFunction(true);
setSql(sqlString);
declareParameter(new SqlParameter("type_id",Types.INTEGER));
declareParameter(new SqlOutParameter("functionName",OracleTypes.CURSOR,new KeyTypeMapper()));
compile();
}

public Map execute(int category_id) {
Map<String, Object> inputs = new HashMap<String, Object>();
inputs.put("type_id", category_id);
Map output = execute(inputs);
return output;
}

我调用oracle函数如下。

int i = 60;
KeyTypeService keyTypeService = new KeyTypeService((DataSource)c.getBean ("DataSource"),"get_key_types");
map = keyTypeService.execute(i);

我收到以下错误,表明我没有传递预期的正确数据类型。

PLS-00306:调用“get_key_types”时参数的数量或类型错误ORA-06550:第 1 行,第 7 列:PL/SQL:语句被忽略

任何帮助将不胜感激..

最佳答案

由于我的评论是正确的:

输出参数必须在前。

Spring 文档可能不会明确讨论顺序,但参数顺序必须与您在没有 spring 的情况下调用 pl/sql 函数时的顺序相同。即:

out = call pacakge.function(in)

关于oracle - 使用 Spring jdbctemplate 调用 oracle 函数返回游标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11305543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com