Erro ao tentar executar função do oracle com parâmetro clob

3 respostas
levimendes

Olá pessoal,

Estou tentando executar uma função desenvolvida em plsql oracle, no java.
Um dos parâmetros dessa funcção é um tipo de dado Clob, o problema é que quando eu passo o clob para a função, é lançada a exeção abaixo:

Exception in thread "main" java.lang.ClassCastException: javax.sql.rowset.serial.SerialClob cannot be cast to oracle.sql.CLOB

Acredito que seja pelo fato do conteúdo do Clob ser muito extenso.
Alguém tem idéia de como eu possa solucionar esse problema?

private void exportarParaXmlComWhere(String nomeTabela) throws Exception{

		PreparedStatement stmt = null;
		String strIdsSelecionados = "";

		strIdsSelecionados += ";";
		String resIdSelecionados = strIdsSelecionados.replaceAll(", ;", "");  
		String sql = "SELECT EXPORTA_XML(?, ?) as XML FROM DUAL";

		java.sql.Clob clobValores = new SerialClob(listaEstId.toCharArray());
		stmt = con.prepareStatement(sql);
		
		stmt.setString(1, "ICATB_ESTACAO");
		stmt.setClob(2, clobValores); 

		ResultSet rs = stmt.executeQuery(sql);

		while (rs.next()) {
			String xml = rs.getString("XML");

			if(xml != null){
				makeFile("C:/Documents and Settings/levi/Desktop/teste", xml);
			}
		}

		rs.close();
		stmt.close();
	}

	public Teste() {
		super();

		listaEstId = " WHERE EST_ID IN (90234, 90235, 90236, 90237, " +
		"90230, 90231, 90232, 90233, 90228, 90227, 90229, 90240, 90247, 90248, 90245, 90246, 90243, " +
		"90244, 90241, 90242, 2, 6, 90239, 90238, 4, 9, 90250, 90251, 90252, 90253, 90254, 90255, " +
		"90256, 90257, 90258, 90259, 90249, 90261, 90262, 90260, 90263, 90264, 80999, 90204, 90203, " +
		"90202, 90201, 90200, 90005, 90006, 90003, 90002, 90000, 90008, 90007, 90211, 90210, 90009, " +
		"90213, 90212, 90215, 90214, 90205, 90010, 90206, 90011, 90207, 90012, 90208, 90013, 90209, " +
		"90014, 90015, 90016, 90017, 90222, 90221, 90220, 90019, 90018, 90226, 90225, 90224, 90223, " +
		"90020, 90218, 90023, 90219, 90024, 90216, 90021, 90217, 90022, 90027, 90028, 90025, 90026, " +
		"81429, 81630, 81631, 81427, 81428, 81634, 81635, 81632, 81633, 81433, 81628, 81432, 81627, " +
		"81431, 81626, 81430, 81625, 81437, 81436, 81435, 81434, 81629, 81416, 81417, 81418, 81419, " +
		"81620, 81621, 81622, 81623, 81624, 81420, 81615, 81614, 81422, 81617, 81421, 81616, 81424, " +
		"81619, 81423, 81618, 81426, 81425, 81612, 81613, 81409, 81610, 81611, 81407, 81408, 81405, " +
		"81406, 81415, 81414, 81609, 81413, 81608, 81412, 81607, 81411, 81606, 81410, 81605, 81604, " +
		"81603, 81600, 81601, 81602, 81402, 81401, 81404, 81403, 81400, 81671, 81670, 81675, 81674, " +
		"81673, 81672, 81679, 81678, 81677, 81676, 81669, 81660, 81662, 81661, 81664, 81663, 81666, " +
		"81665, 81668, 81667, 81658, 81659, 81657, 81656, 81655, 81654, 81653, 81652, 81651, 81650, " +
		"81649, 81647, 81648, 81644, 81643, 81646, 81645, 81640, 81642, 81641, 81636, 81637, 81638, " +
		"81639, 81385, 81384, 81383, 81382, 81381, 81380, 81199, 81198, 81197, 81196, 81195, 81389, " +
		"81194, 81388, 81193, 81387, 81192, 81386, 81191, 81190, 81588, 81589, 81586, 81587, 81584, " +
		"81585, 81582, 81583, 81580, 81581, 81394, 81393, 81396, 81395, 81390, 81189, 81188, 81392, " +
		"81391, 81185, 81184, 81187, 81186, 81398, 81181, 81397, 81180, 81183, 81399, 81182, 81599, " +
		"81595, 81596, 81597, 81598, 81591, 81592, 81593, 81594, 81590, 81179, 81178, 81177, 81363, " +
		"81362, 81361, 81360, 81367, 81172, 81366, 81171, 81365, 81170, 81364, 81559, 81176, 81175, " +
		"81369, 81174, 81368, 81173, 81564, 81565, 81562, 81563, 81568, 81569, 81566, 81567, 81560, " +
		"81561, 81167, 81166, 81370, 81169, 81168, 81372, 81371, 81374, 81373, 81376, 81375, 81378, " +
		"81161, 81377, 81160, 81163, 81379, 81162, 81165, 81164, 81573, 81574, 81575, 81576, 81577, " +
		"81578, 81579, 81570, 81571, 81572, 81348, 81349, 81346, 81347, 81344, 81345, 81342, 81343, " +
		"81340, 81341, 81339, 81357, 81358, 81359, 81353, 81354, 81355, 81356, 81350, 81351, 81352, " +
		"81322, 81323, 81320, 81321, 81326, 81327, 81324, 81325, 81319, 81318, 81317, 81331, 81332, " +
		"81333, 81334, 81335, 81336, 81337, 81338, 81330, 81329, 81328, 81108, 81109, 81116, 81115, " +
		"81118, 81117, 81112, 81111, 81114, 81113, 81110, 90191, 81107, 90192, 81106, 81105, 90190, " +
		"81104, 90195, 81103, 90196, 81102, 90193, 81101, 90194, 81100, 90199, 90197, 90198, 90165, " +
		"81151, 90164, 81152, 90167, 81153, 90166, 81154, 90169, 90168, 81150, 81159, 90161, 81155, " +
		"90160, 81156, 90163, 81157, 90162, 81158, 90156, 81142, 90155, 81143, 90154, 81140, 90153, " +
		"81141, 90159, 90158, 90157, 81148, 81149, 90152, 81146, 90151, 81147, 90150, 81144, 81145, " +
		"90187, 90186, 81130, 90189, 81131, 90188, 81132, 90183, 81133, 90182, 81134, 90185, 81135, " +
		"90184, 81136, 81137, 81138, 90181, 81139, 90180, 81119, 90179, 90178, 81120, 90177, 81121, " +
		"90176, 90175, 90174, 81124, 90173, 81125, 90172, 81122, 90171, 81123, 90170, 81128, 81129, " +
		"81126, 81127, 90131, 90132, 90133, 90134, 90135, 90136, 90137, 90138, 90130, 90129, 90128, " +
		"90144, 90145) OR EST_ID IN (90142, 90143, 90148, 90149, 90146, 90147, 90140, 90141, 90139, " +
		"90113, 90114, 90115, 90116, 90110, 90111, 90112, 90107, 90106, 90109, 90108, 90126, 90127, " +
		"90124, 90125, 90122, 90123, 90120, 90121, 90119, 90118, 90117, 90101, 90100, 90105, 90104, " +
		"90103, 90102, 81300, 81301, 81302, 81303, 81304, 81305, 81702, 81703, 81704, 81705, 81706, " +
		"81707, 81708, 81709, 81710, 81712, 81711, 81311, 81312, 81310, 81315, 81316, 81313, 81314, " +
		"81701, 81700, 81309, 81308, 81307, 81306, 81733, 81734, 81731, 81732, 81528, 81529, 81730, " +
		"81526, 81527, 81536, 81535, 81534, 81729, 81533, 81728, 81532, 81727, 81531, 81726, 81530, " +
		"81725, 81724, 81519, 81720, 81721, 81722, 81723, 81515, 81516, 81517, 81518, 81523, 81718, " +
		"81522, 81525, 81524, 81719, 81714, 81713, 81521, 81716, 81520, 81715, 81751, 81752, 81548, " +
		"81750, 81549, 81755, 81756, 81753, 81754, 81749, 81554, 81748, 81553, 81747, 81552, 81746, " +
		"81551, 81558, 81557, 81556, 81555, 81550, 81537, 81538, 81740, 81539, 81741, 81742, 81743, " +
		"81744, 81745, 81736, 81541, 81735, 81540, 81738, 81543, 81737, 81542, 81545, 81739, 81544, " +
		"81547, 81546, 81778, 81777, 81776, 81775, 81774, 81773, 81772, 81771, 81770, 81768, 81769, " +
		"81765, 81764, 81767, 81766, 81761, 81760, 81763, 81762, 81757, 81758, 81759, 81796, 81507, " +
		"81795, 81506, 81794, 81505, 81793, 81504, 81799, 81798, 81509, 81797, 81508, 81792, 81791, " +
		"81790, 81510, 81513, 81514, 81511, 81512, 81783, 81782, 81785, 81784, 81787, 81786, 81789, " +
		"81788, 81781, 81780, 81779, 81500, 81501, 81502, 81503, 81293, 81488, 81292, 81487, 81291, " +
		"81486, 81485, 81290, 81297, 81091, 81296, 81090, 81295, 81294, 81489, 81836, 81480, 81837, " +
		"81834, 81299, 81835, 81298, 81484, 81483, 81838, 81482, 81839, 81481, 81840, 81681, 81682, " +
		"81680, 40, 81685, 81094, 81686, 81095, 81683, 81092, 81684, 81093, 81689, 81098, 81099, " +
		"81687, 81096, 81688, 81097, 81497, 81280, 81496, 81499, 81282, 81498, 81281, 81284, 81283," +
		" 81080, 81286, 81285, 81288, 81287, 81491, 24, 81490, 81289, 81493, 81492, 81495, 28, " +
		"81494, 29, 81089, 81690, 30, 81691, 81692, 81693, 81694, 81081, 81695, 81082, 81696, 81083, " +
		"81697, 81084, 81698, 81085, 81699, 81086, 81087, 81088, 19, 18, 15, 16, 11, 20, 10, 79, 77," +
		" 81440, 81443, 81444, 81441, 81442, 81447, 81448, 81445, 81446, 81051, 81050, 81439, 81438," +
		" 81055, 81054, 81053, 81052, 81059, 81058, 80, 81057, 81, 81056, 69, 81450, 81451, 81452, " +
		"81453, 81454, 81455, 81456, 81457, 81458, 81459, 81449, 81040, 81042, 81041, 81044, 81043," +
		" 81046, 81045, 81048, 81047, 81049, 75, 81461, 81462, 81460, 81469, 81467, 81468, 81465, " +
		"81466, 81463, 81464, 81077, 81076, 81075, 81074, 81073, 81072, 81071, 81070, 81079, 81078, " +
		"81470, 81471, 81472, 81473, 46, 81478, 81479, 81474, 81475, 81476, 81477, 81064, 81063, " +
		"81066, 81065, 81060, 81062, 81061, 81068, 81067, 81069, 81012, 81207, 81013, 81208, 81014," +
		" 81209, 81015, 81016, 81017, 81018, 81019, 81010, 81011, 81211, 81009, 81210, 81213, 81212," +
		" 81215, 81214, 81217, 81216, 81003, 81007, 81008, 81006, 90098, 90099, 90096, 81202, 90097," +
		" 81201, 90094, 81200, 90095, 90092, 81206, 90093, 81205, 90090, 81204, 90091, 81203, 81038," +
		" 81039, 81034, 81229, 81035, 81036, 81037, 81030, 81031, 81032, 81033, 90087, 90088, 90089," +
		" 81231, 81230, 81237, 90080, 81236, 90081, 81239, 90082, 81238, 90083, 102, 81233, 90084, " +
		"101, 81232, 90085, 100, 81235, 90086, 81234, 81029, 81027, 81028, 81025, 81026, 81023, " +
		"81218, 81024, 81219, 81021, 81022, 81020, 90078, 81220, 90079, 90076, 90077, 90070, 81228, " +
		"90071, 81227, 81226, 81225, 90074, 81224) OR EST_ID IN (90075, 81223, 90072, 81222, 90073," +
		" 81221, 81800, 90062, 81254, 90061, 81255, 90064, 81256, 90063, 81257, 81258, 81259, 90060, " +
		"90069, 90066, 81250, 90065, 81251, 90068, 81252, 90067, 81253, 81810, 81811, 81804, 90053," +
		" 81245, 81803, 90052, 81246, 81802, 90051, 81243, 81801, 90050, 81244, 81808, 81249, 81807, " +
		"81806, 81247, 81805, 81248, 90059, 81809, 90058, 90057, 81241, 90056, 81242, 90055, 90054, " +
		"81240, 81820, 81821, 81822, 81817, 81816, 81819, 81818, 81813, 90040, 81276, 81812, 81277," +
		" 81815, 90042, 81278, 81814, 90041, 81279, 90044, 81272, 90043, 81273, 90046, 81274, 90045," +
		" 81275, 90048, 90047, 81270, 90049, 81271, 90029, 81832, 81833, 81830, 81831, 81829, 81828, " +
		"81269, 81827, 81826, 90031, 81267, 81825, 90030, 81268, 81824, 81265, 81823, 81266, 90035," +
		" 81263, 90034, 81264, 90033, 81261, 90032, 81262, 90039, 90038, " +
		"81260, 90037, 90036)) as XML FROM DUAL";

		this.con = Conecta.getConcexaoHidro();
	}

3 Respostas

drsmachado

Alguma vez já fez insert para Date?
Você teria um erro parecido ao fazer

java.util.Date dataAtual = new Date();
//código aqui
stm.setDate(x, dataAtual);

Pois o tipo de objeto a ser passado é um java.sql.Date…

Deve existir um meio de efetuar o cast

levimendes

olá drsmachado, tudo bem?

vc tem idéia de como eu posso fazer esse teste?
pois pelo que eu vi SerialClob implementa a interface Clob, logo, não haveria a necessidade de reazliar o teste.
certo?

drsmachado

Sim, mas Clob, nesse caso. não é do pacote oracle.sql.CLOB

Criado 4 de outubro de 2011
Ultima resposta 4 de out. de 2011
Respostas 3
Participantes 2