Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Передача CLOB объекта из Java в хранимую процедуру Oracl 8i  [new]
igor_dev
Member

Откуда:
Сообщений: 252
У меня есть хранимая процедура

create or replace procedure MY_PROC ( a IN clob )

я пытаюсь передать в нее из Java приложения, созданный мной обьект CLOB

...
CallableStatement cstmt = conn.prepareCall( "{call IGOR_TEST_HH_VAL_INSERT ( ?, ? )}" );

System.out.println("Creating CLOB-object");

CLOB tempClob = CLOB.createTemporary ( conn, true, CLOB.DURATION_SESSION );

cstmt.setClob( 1, tempClob );

cstmt.execute();
...

НЕ пашет. Ни в Java ни в Delphi? Кто-то может подсказать или правильный код привести?
9 фев 07, 17:28    [3763832]     Ответить | Цитировать Сообщить модератору
 Re: Передача CLOB объекта из Java в хранимую процедуру Oracl 8i  [new]
igor_dev
Member

Откуда:
Сообщений: 252
СОРРИ У МЕНЯ Oracle 9i !!!!!!!!!!!!!!!!!!
9 фев 07, 17:34    [3763867]     Ответить | Цитировать Сообщить модератору
 Re: Передача CLOB объекта из Java в хранимую процедуру Oracl 8i  [new]
garry_k
Member

Откуда: Волгоград-Москва
Сообщений: 118
Уменя работает так

  BLOB blob = BLOB.createTemporary(dbc.getConnection(), false,
            BLOB.DURATION_SESSION);
        OutputStream out = blob.getBinaryOutputStream(); //blob2.setBinaryStream(0); 
        isTiff.reset();
        InputStream is = //какой-то поток
        int ch;

        while ((ch = is.read()) != -1) {
          out.write((char) ch);
        }

        out.flush();
        pstmt.setBlob(1, blob);
        pstmt.execute();
По моему для CLOB то же самое. Надо его чем-то заполнить
9 фев 07, 17:38    [3763886]     Ответить | Цитировать Сообщить модератору
 Re: Передача CLOB объекта из Java в хранимую процедуру Oracl 8i  [new]
garry_k
Member

Откуда: Волгоград-Москва
Сообщений: 118
Не подредактировал.
Строка
isTiff.reset();
не имеет отношения к фрагменту
9 фев 07, 17:40    [3763896]     Ответить | Цитировать Сообщить модератору
 Re: Передача CLOB объекта из Java в хранимую процедуру Oracl 8i  [new]
igor_dev
Member

Откуда:
Сообщений: 252
У меня не BLOB а CLOB но не пашет ни так ни так!!! В чем беда? может в 9i или права?
9 фев 07, 17:48    [3763938]     Ответить | Цитировать Сообщить модератору
 Re: Передача CLOB объекта из Java в хранимую процедуру Oracl 8i  [new]
garry_k
Member

Откуда: Волгоград-Москва
Сообщений: 118
сможешь дать полный код? Давай попробую помочь.
Я привел пример с BLOB. С CLOB никокой разницы нету
9 фев 07, 17:50    [3763954]     Ответить | Цитировать Сообщить модератору
 Re: Передача CLOB объекта из Java в хранимую процедуру Oracl 8i  [new]
igor_dev
Member

Откуда:
Сообщений: 252
import  java.sql.*;
import  java.io.*;
import  oracle.jdbc.pool.OracleDataSource;
import  oracle.sql.*;

public class JDBCTest {

public static void main( String [] argv ) throws SQLException, IOException {

	System.out.println("Creating Oracle data source...");

	OracleDataSource ods = new OracleDataSource();
	ods.setURL("jdbc:oracle:oci8:askue/askue@askue");

	System.out.println("Connecting...");

	Connection conn = ods.getConnection();

	System.out.println("Connected...");

	System.out.println("Creating Oracle calleble statement...");


	CallableStatement cstmt = conn.prepareCall( "{call  IGOR_TEST_HH_VAL_INSERT ( ?, ? )}" );

	System.out.println("Creating CLOB-object");

	//CLOB tempClob = CLOB.createTemporary ( conn, false, CLOB.DURATION_SESSION );
BLOB blob = BLOB.createTemporary(conn, true,
            BLOB.DURATION_SESSION);


	OutputStream out = blob.getBinaryOutputStream(); //blob2.setBinaryStream(0); 
       	

	out.write(1);

	out.flush();
	out.close();



	/*tempClob.open(CLOB.MODE_READWRITE); 

   	Writer tempClobWriter = tempClob.getCharacterOutputStream(); 

    	tempClobWriter.write("hello!"); 

    	tempClobWriter.flush();
   	tempClobWriter.close(); 
 
   	tempClob.close();  */ 

	cstmt.setBlob( 1,blob );

	cstmt.execute();

	System.out.println("JDBC installation is correct...");

	cstmt.close();
	conn.close();
}

}


ПРОЦЕДУРА

create or replace procedure IGOR_TEST_HH_VAL_INSERT ( a IN blob )
is
  s VARCHAR(20);
begin
       s:='';    
end;
9 фев 07, 17:55    [3763985]     Ответить | Цитировать Сообщить модератору
 Re: Передача CLOB объекта из Java в хранимую процедуру Oracl 8i  [new]
igor_dev
Member

Откуда:
Сообщений: 252
ВОТ ТО ДЛЯ BLOB :-))

import  java.sql.*;
import  java.io.*;
import  oracle.jdbc.pool.OracleDataSource;
import  oracle.sql.*;

public class JDBCTest {

public static void main( String [] argv ) throws SQLException, IOException {

	System.out.println("Creating Oracle data source...");

	OracleDataSource ods = new OracleDataSource();
	ods.setURL("jdbc:oracle:oci8:askue/askue@askue");

	System.out.println("Connecting...");

	Connection conn = ods.getConnection();

	System.out.println("Connected...");

	System.out.println("Creating Oracle calleble statement...");


	CallableStatement cstmt = conn.prepareCall( "{call  IGOR_TEST_HH_VAL_INSERT ( ?, ? )}" );

	System.out.println("Creating CLOB-object");

	CLOB tempClob = CLOB.createTemporary ( conn, false, CLOB.DURATION_SESSION );

	/*tempClob.open(CLOB.MODE_READWRITE); 

   	Writer tempClobWriter = tempClob.getCharacterOutputStream(); 

    	tempClobWriter.write("hello!"); 

    	tempClobWriter.flush();
   	tempClobWriter.close(); 
 
   	tempClob.close();  */ 

	cstmt.setClob( 1,blob );

	cstmt.execute();

	System.out.println("JDBC installation is correct...");

	cstmt.close();
	conn.close();
}

}
9 фев 07, 17:56    [3763995]     Ответить | Цитировать Сообщить модератору
 Re: Передача CLOB объекта из Java в хранимую процедуру Oracl 8i  [new]
igor_dev
Member

Откуда:
Сообщений: 252
ДАУНИТОО!!!!! У МЕНЯ ? ОДИН ДОЛЖЕН БЫТЬ!!!
9 фев 07, 18:05    [3764047]     Ответить | Цитировать Сообщить модератору
 Re: Передача CLOB объекта из Java в хранимую процедуру Oracl 8i  [new]
igor_dev
Member

Откуда:
Сообщений: 252
ТЕМА ЗАКРЫТА :-)))
9 фев 07, 18:07    [3764053]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Передача CLOB объекта из Java в хранимую процедуру Oracl 8i  [new]
guest62
Member

Откуда:
Сообщений: 215
igor_dev
ТЕМА ЗАКРЫТА :-)))


Вы нашли где тут было ощибка?
14 июн 08, 08:51    [5800810]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Передача CLOB объекта из Java в хранимую процедуру Oracl 8i  [new]
Zamira
Member

Откуда:
Сообщений: 1
Господа, пожалуйста помогите человеку который впервые столкнулся с базами данных и которому нужно писать скуль запросы для построения отчетов.

Как вытащить с базы данных поля типа clob? если в sqldevelopere, то напрямую селектом выдается результат где в каждой строке столбца написано слово CLOB и в скобках размер текста. как сделать так что бы в результирующей таблице был сразу нужный текст.. пусть даже большого объема(на 3-4 строки)
6 сен 10, 21:33    [9393845]     Ответить | Цитировать Сообщить модератору
 Re: Передача CLOB объекта из Java в хранимую процедуру Oracl 8i  [new]
Garrick
Member

Откуда: Москва
Сообщений: 2928
Zamira,

http://www.google.ru/search?q=otracle+JDBC+cblob&ie=utf-8&oe=utf-8
Сразу первые две ссылки уже дают нужный результат
Handling CLOBs - Made easy with Oracle JDBC 10g
LOBSample
7 сен 10, 10:02    [9395125]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить