第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

將空的sql數(shù)組發(fā)送到oracle過(guò)程中

將空的sql數(shù)組發(fā)送到oracle過(guò)程中

瀟湘沐 2023-07-19 15:01:29
我正在嘗試將 sql.Array 發(fā)送到過(guò)程中,但不知何故它在 oracle 過(guò)程內(nèi)部變空。我的java代碼用數(shù)據(jù)填充sql.Array并嘗試將其發(fā)送到過(guò)程中。         oracle.jdbc.OracleConnection connection = (OracleConnection) JdbcConnection.getInstance().createConnection();            String [] name = new String[]{"20206643799002684001","20206643799002684001"};            ArrayDescriptor arrDec = ArrayDescriptor.createDescriptor("ARRAY_VARCHAR2",connection.unwrap(oracle.jdbc.OracleConnection.class));            Array arr = new ARRAY(arrDec,connection.unwrap(oracle.jdbc.OracleConnection.class),name);            OracleCallableStatement callableStatement = connection.prepareCall("{call bss_acc.ACC_STATEMENT(?,?,?,?)}");            callableStatement.setDate(1,date);            callableStatement.setDate(2,dateL);           ((OracleCallableStatement)callableStatement).setARRAY(3,arr);            callableStatement.setString(4,this.branchId);            callableStatement.execute();在程序中,我放置了日志,以便查看執(zhí)行該程序后獲得的值。我總是得到在此過(guò)程中顯示的空數(shù)組元素。procedure ACC_STATEMENT(i_begin_date date,i_end_date date,i_ids array_varchar2,i_mfo varchar2)iso_ext_acc varchar2(20);o_beginRest number;o_endRest number;o_name varchar2(100);o_rest number;o_type varchar2(100);beginFOR i IN 1.. i_ids.count LOOPo_ext_acc := i_ids(i);-- testRAISE_ERROR(20000, 'o_ext_acc -' ||o_ext_acc);UPD 當(dāng)我設(shè)置調(diào)試模式以查看 arr 發(fā)生了什么時(shí),我注意到了這個(gè)數(shù)據(jù)。這意味著數(shù)組不從中獲取值,并且它顯示問(wèn)號(hào)而不是它。
查看完整描述

2 回答

?
www說(shuō)

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊

經(jīng)過(guò)兩天的搜索,主要問(wèn)題是 datumnArray 是 ???。這意味著 oracld db 和 jdbc 與其字符集不匹配。添加此代碼后。


 String s1 = new String(account.get(0).getBytes(), Charset.forName("ISO-8859-1"));

                String [] name = new String[]{s1};

                //oracle.sql.ArrayDescriptor arrayDescriptor = new ArrayDescriptor("ARRAY_VARCHAR2",connection);

                oracle.sql.ARRAY a = connection.createARRAY("ARRAY_VARCHAR2", name);

http://img1.sycdn.imooc.com//64b78a75000139cf05980487.jpg

并將這個(gè)庫(kù)添加到maven中


<dependency>

        <groupId>com.oracle</groupId>

        <artifactId>orai18n</artifactId>

        <version>11.1.0.7.0</version>

    </dependency>

這對(duì)我有用。我認(rèn)為他們都是解決問(wèn)題的關(guān)鍵。下面的圖片開(kāi)頭。

http://img1.sycdn.imooc.com//64b78a810001b3ba05940484.jpg

查看完整回答
反對(duì) 回復(fù) 2023-07-19
?
萬(wàn)千封印

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊

使用oracle.sql.ARRAYandoracleConnection.setARRAY()而不是java.sql.Arrayand javaConnection.setArray():


Connection connection = JdbcConnection.getInstance().createConnection();

OracleConnection oconnection = (OracleConnection) connection.unwrap( oracle.jdbc.OracleConnection.class );


String [] name = new String[]{"20206643799002684001","20206643799002684001"};

ArrayDescriptor arrDec = ArrayDescriptor.createDescriptor("ARRAY_VARCHAR2",oconnection);

ARRAY arr = new ARRAY(arrDec,oconnection,name);

/*

 * Or

 * ARRAY arr = oconnection.createARRAY("ARRAY_VARCHAR2", name);

 */

OracleCallableStatement callableStatement

  = (OracleCallableStatement) oconnection.prepareCall("{call bss_acc.ACC_STATEMENT(?,?,?,?)}");

callableStatement.setDate(1,date);

callableStatement.setDate(2,dateL);

callableStatement.setARRAY(3,arr);

callableStatement.setString(4,this.branchId);

callableStatement.execute();


查看完整回答
反對(duì) 回復(fù) 2023-07-19
  • 2 回答
  • 0 關(guān)注
  • 179 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)