java.sql.sqlexception: 无效的名称模式:_尝试传递自定义oracle类型对象映射时无效的名称模式...

Java spring自定义Oracle类型作为参数并获得跟随错误。

我不明白无效名称模式是什么意思?

感谢任何帮助。

org.springframework.jdbc.UncategorizedSQLException:

### Error updating database. Cause: java.sql.SQLException: invalid name pattern: UPSELL.mkt_list_tab

### The error may involve com.comcast.upsell.dao.ProviderAndRegionalDao.getCorpsToMarketsList-Inline

### The error occurred while setting parameters

### SQL: call upsell_tx_etl_report.GET_OFFER_CORPS_TO_MARKETS( ?, ?, ? )

### Cause: java.sql.SQLException: invalid name pattern: MY_SCHEMA.mkt_list_tab

; uncategorized SQLException for SQL []; SQL state [99999]; error code [17074]; invalid name pattern: MY_SCHEMA.mkt_list_tab; nested exception is java.sql.SQLException: invalid name pattern: MY_SCHEMA.mkt_list_tab

at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)

at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)

at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)

at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:71)

at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:364)

at com.sun.proxy.$Proxy15.update(Unknown Source)

以下是我的oracle类型decleration

create or replace

type mkt_list_tab is table of mkt_list_rec

create or replace

type mkt_list_rec as object

(

market VARCHAR2(100)

)

Procedure call as following

PROCEDURE GET_OFFER_CORPS_TO_MARKETS(p_division IN VARCHAR2, --ALL/Particular

p_market_list IN mkt_list_tab,

o_offer_corp_market_cur OUT SYS_REFCURSOR)

这是我的java类型处理程序

public class MarketListTypeHandler implements TypeHandler {

@SuppressWarnings("unchecked")

@Override

public void setParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException {

C3P0NativeJdbcExtractor cp30NativeJdbcExtractor = new C3P0NativeJdbcExtractor();

OracleConnection connection = (OracleConnection) cp30NativeJdbcExtractor.getNativeConnection(ps.getConnection());

List objects = (List) parameter;

StructDescriptor structDescriptor = StructDescriptor.createDescriptor("mkt_list_rec", connection);

STRUCT[] structs = new STRUCT[objects.size()];

for (int index = 0; index < objects.size(); index++)

{

StoredProcedurePojo pack = objects.get(index);

Object[] params = new Object[2];

params[0] = pack.getMarket();

STRUCT struct = new STRUCT(structDescriptor, ps.getConnection(), params);

structs[index] = struct;

}

ArrayDescriptor desc = ArrayDescriptor.createDescriptor("mkt_list_tab", ps.getConnection());

ARRAY oracleArray = new ARRAY(desc, ps.getConnection(), structs);

ps.setArray(i, oracleArray);

}

@Override

public Object getResult(ResultSet arg0, String arg1) throws SQLException {

// TODO Auto-generated method stub

return null;

}

@Override

public Object getResult(ResultSet arg0, int arg1) throws SQLException {

// TODO Auto-generated method stub

return null;

}

@Override

public Object getResult(CallableStatement arg0, int arg1) throws SQLException {

// TODO Auto-generated method stub

return null;

}

public MarketListTypeHandler() {

super();

// TODO Auto-generated constructor stub

}

}

这是我的存储过程pojo类

public class StoredProcedurePojo {

private String market;

public String getMarket() {

return market;

}

public void setMarket(String market) {

this.market = market;

}

}

我正在尝试遵循以下解决方案

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值