栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将数组传递给oracle过程

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将数组传递给oracle过程

这是一个如何做的例子。

以下脚本在数据库中设置表,类型和存储过程。该过程采用数组类型的参数,并将数组的每一行插入表中:

CREATE TABLE strings (s VARCHAr(4000));CREATE TYPE t_varchar2_array AS TABLE OF VARCHAr2(4000);/CREATE OR REPLACE PROCEDURE p_array_test(    p_strings      t_varchar2_array)ASBEGIN  FOR i IN 1..p_strings.COUNT  LOOP    INSERT INTO strings (s) VALUES (p_strings(i));  END LOOP;END;/

然后,Java代码演示如何将数组传递到此存储过程中:

import java.sql.*;import oracle.jdbc.*;import oracle.sql.*;public class ArrayTest {    public static void main(String[] args) throws Exception {        DriverManager.registerDriver(new OracleDriver());        Connection conn = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:xe", "user", "pass");        CallableStatement stmt = conn.prepareCall("BEGIN p_array_test(?); END;");        // The first parameter here should be the name of the array type.        // It's been capitalised here since I created it without using        // double quotes.        ArrayDescriptor arrDesc = ArrayDescriptor.createDescriptor("T_VARCHAR2_ARRAY", conn);        String[] data = { "one", "two", "three" };        Array array = new ARRAY(arrDesc, conn, data);        stmt.setArray(1, array);        stmt.execute();        conn.commit();        conn.close();    }}

如果先运行SQL脚本,然后运行Java类,然后查询表

strings
,则应该发现所有数据都已插入到表中。

当您说“一个字符数组”时,我猜测您的意思是一个Java数组

char
。如果我猜对了,那么我认为您最好将
char
s
转换为
String
s,然后使用与上述相同的方法。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/495579.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号