I forgot to mention that you this will only work on 10.5, which includes
the fix for DERBY-2201.
Regards,
-Rick
Rick Hillegas wrote:
Often these coercion problems can be finessed by writing your own cast
function. You might try the following:
1) Write a public static method which takes a String argument and
returns a java.sql.Blob value.
2) Register that method as a Derby function which takes a VARCHAR
argument and returns a BLOB.
3) Then use the function to coerce string values to Blobs in your
insert statements.
Here's some code which shows how to do this. First the static method:
import java.sql.Blob;
import org.apache.derbyTesting.functionTests.tests.lang.StringColumnVTI;
public class z
{
public static Blob makeBlob( String seed )
{
return new StringColumnVTI.SimpleBlob( seed.getBytes() );
} }
Then a little ij script which exercises the function:
connect 'jdbc:derby:memory:dummy;create=true';
create function makeBlob( seed varchar( 32672 ) )
returns blob
language java
parameter style java
no sql
external name 'z.makeBlob';
create table t( a blob );
insert into t( a ) values ( makeBlob( 'xyz' ) );
select * from t;
Hope this helps,
-Rick
cmathrusse wrote:
I had read that post prior and it would require me converting the
text that I
am attempting to insert, an xslt file, into a hex representation.
Only then
could I attempt to do this. I did actually attempt this. (not very
friendly)
I did convert the contents of my file into a hex representation and
attempted the insert by performing a CAST( X'text content' AS BLOB),
but it
complained when I executed the SQL. While this would be a viable
approach, I
think you would agree that this is far from desirable.
What would be optimal would be the ability to have Derby allow
inserts of
TEXT into BLOB fields. I know that this is how Sybase ASE operates,
(Yes, I
know Derby is not ASE) and I don't know if this is ANSI standard, but it
sure makes life less complicated.