blob excel
Publicado por Esteban (3 intervenciones) el 29/04/2014 15:48:11
Hola alguien me puede ayudar con esto: tengo un store procedure que me genera el archivo.csv y se guarda en el servidor de base de datos, genera un archivo fisico, no se guarda en una tabla; se aloja fisicamente en el servidor.
el store es este
el store devuelve_funcion es el que me retorna un blob(que es el archivo fisico), el problema esta que desde .net no se como recibirlo al blob y que me lo levante con excel, esta es la parte de .net
alguien me puede dar una mano con esto.-
gracias...
el store es este
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function from_file_funcion(dir in varchar2, file in varchar2) return blob is
ret blob;
begin
dbms_lob.createTemporary(ret, true);
from_file(dir, file, ret);
return ret;
end from_file_funcion;
procedure from_file(dir in varchar2, file in varchar2, b in out blob) is
input_file utl_file.file_type;
chunk_size constant pls_integer := 4096;
buf raw (4096); -- Must be equal to chunk_size
read_sofar pls_integer := 0; --(avoid PLS-00491: numeric literal required)
bytes_to_read pls_integer;
begin
input_file := utl_file.fopen(dir, file, 'RB');
begin loop
utl_file.get_raw(input_file, buf, chunk_size);
bytes_to_read := length(buf) / 2; -- strange and unexplanable!
dbms_lob.write(b, bytes_to_read, read_sofar+1, buf);
read_sofar := read_sofar + bytes_to_read;
-- utl_file raises no_data_found when unable to read
end loop; exception when no_data_found then null; end;
utl_file.fclose(input_file);
end from_file;
procedure devuelve_funcion(dir in varchar2, file in varchar2, b in out blob)
is
begin
b:= blob_wrapper.from_file_funcion('CSV_DIR','deve.csv');
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
OracleConnection conn = new OracleConnection("Data Source=bd; User Id=usr;Password=dir;");
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "blob_wrapper.devuelve_funcion";
cmd.CommandType = CommandType.StoredProcedure;
OracleParameter directorio = new OracleParameter("dir", OracleType.VarChar, 500);
directorio.Direction = ParameterDirection.Input;
directorio.Value = "CSV_DIR";
cmd.Parameters.Add(directorio);
OracleParameter file = new OracleParameter("file", OracleType.VarChar, 500);
file.Direction = ParameterDirection.Input;
file.Value = "dev.csv";
cmd.Parameters.Add(file);
OracleParameter inval = new OracleParameter("b", OracleType.Blob);
inval.Direction = ParameterDirection.Input;
inval.Value = null;
cmd.Parameters.Add(inval);
OracleParameter outval = new OracleParameter("b", OracleType.Blob);
outval.Direction = ParameterDirection.Output;
cmd.Parameters.Add(outval);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
alguien me puede dar una mano con esto.-
gracias...
Valora esta pregunta


0