首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过IBatis.Net将长字符串传递给存储函数时出现问题

通过IBatis.Net将长字符串传递给存储函数时出现问题
EN

Stack Overflow用户
提问于 2011-07-22 05:35:53
回答 1查看 1.5K关注 0票数 0

我有以下类型和函数:

代码语言:javascript
复制
CREATE OR REPLACE TYPE SERIAL_NUMBER_TABLE AS TABLE OF VARCHAR2(4000);

CREATE OR REPLACE FUNCTION F_DEVICE_SERIAL_TABLE(
  SN_LIST       IN CLOB,
  SN_DELIMITER  IN VARCHAR2 DEFAULT ';')
  RETURN SERIAL_NUMBER_TABLE
IS
  V_STRING LONG := SN_LIST || SN_DELIMITER;
  V_POS PLS_INTEGER;
  V_DATA SERIAL_NUMBER_TABLE := SERIAL_NUMBER_TABLE();
BEGIN
  LOOP
    V_POS := INSTR(V_STRING, SN_DELIMITER);
    EXIT WHEN (NVL(V_POS, 0) = 0);
    V_DATA.EXTEND;
    V_DATA(V_DATA.COUNT) := TRIM(SUBSTR(V_STRING, 1, V_POS - 1));
    V_STRING := SUBSTR(V_STRING, V_POS + 1);    
  END LOOP ;
  RETURN V_DATA;
END F_DEVICE_SERIAL_TABLE;

我正在尝试通过IBatis map xml配置中的以下映射传递一个巨大的字符串:

代码语言:javascript
复制
<parameterMaps>
    <parameterMap id="StringClob" class="DeviceAlias">
      <parameter property="SerialNumber" type="String" dbType="CLOB"/>
    </parameterMap>
</parameterMaps>

<select id="SelectBySerialNumberList" parameterMap="StringClob" resultMap="DeviceResult">
  <![CDATA[
  SELECT *
  FROM DEVICE D
  INNER JOIN 
    (SELECT * FROM TABLE(CAST(F_DEVICE_SERIAL_TABLE(?) AS SERIAL_NUMBER_TABLE))) SERIAL_TABLE
  ON SERIAL_TABLE.COLUMN_VALUE = D.S_NUMBER
  ]]>
</select>

代码语言:javascript
复制
ORA-01460: unimplemented or unreasonable conversion requested

你有什么办法来解决这个问题吗?PS:对于较小的条目,此代码可以工作

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-27 19:29:53

此错误通常是在您混合使用PLSQL和SQL时导致的。

尝试将"dbType“(CLOB)替换为"VARCHAR”,如下所示:

代码语言:javascript
复制
<parameterMaps>
    <parameterMap id="StringClob" class="DeviceAlias">
        <parameter property="SerialNumber" type="String" dbType="VARCHAR"/>
    </parameterMap>
</parameterMaps>

其他可能的原因如下:

SQL不兼容的字符集会导致ORA-01460

  • Using 开发人员,试图向绑定变量值传递超过4000个字节的字符串可能会导致ORA-01460
  1. 出现ODP值,用户从10.2客户端和10.2ODP10.2客户端迁移到11.1客户端,11.1.0.6.10ODP11.1.0.6.10ODP报告ORA-01460错误。
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6783114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档