I tried your suggestion. DB2 also has a CAST(field AS CHAR( )).
$sth = $dbh->prepare ( " SELECT CAST(\$moid AS CHAR(16)) FROM abc.xyz); but the result was binary data with 8 additional spaces. Is there something wrong in the above code If you have any other suggestion please let me know Thanks Sachin I don't know DB2, but I'm wondering if you're getting a weird binary rendition of characters. Each character is one byte and each byte contains two nybbles, each nybble being represented by one character. For instance, the hexadecimal ASCII code for the letter "H" is "48", so "Hello." would yield "48656C6C6F2EXXXX" (using X to pad out to sixteen characters) and "7AF9FA30" (a pointer value) would yield "3741463946413330". Perhaps your column contains eight bytes of binary data and the & tells the system to apply such a translation. The DB2 documentation should explain it. You should be able to compare the output from both the command line and your program and see if this is true. The difference between the ways you see the data is not surprising. When I select a date using the SQL interface (command line) I get it as a string like "2002-02-27 12:34:56.78" but when I select a date in a program it is the binary rendition unless I use a function... Oracle: TO_CHAR ( field , 'YYYY-MM-DD HH24:MI.SS' ) RDB: CAST ( field AS CHAR(22) ) -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] Sent: Wednesday, February 27, 2002 10:27 AM To: Stephen Keller Cc: [EMAIL PROTECTED] Subject: RE: SELECT \$moid FROM xyz.abc Hi Stephen, I am assuming it is a pointer. The column definition says $MOID stores &CHAR(8). The actual data I am trying to get is a string like "413567EAFFCXXX" 16 characters. I would think this is not a LOB/BLOB... Also when I do a table_info( ) with DBI the TYPE comes up as -2 (SQL_BINARY). As I have said earlier : when I use command line "SELECT \$moid from ...." I get the 16 characters but from DBI::DB2 I get binary data Thanks Sachin Hi Sachin, Hopefully, I've not completely misunderstood your question. I'm stuggling with how to interpret what you mean by the "&char" data value: that looks like C notation for a pointer. If by "&char is being stored in that you column" you mean it is a CLOB or other type of large object, you may need to DBI blob_read method, depending on it's length and the version of the DB2 database. The blob_read is a Statement Handler method and is employed something like this (DATA is a LOB in this case). my $sth = $dbh->prepare ('select $moid from catenv.cattabl'); $sth->execute(); my $resultsValue = 0; my $count = 0; while ( $resultsValue = $sth->fetch() ) { $count++; if ( open ( OFILE, sprintf (">ofile.%03d", $count ))) { # we got some LOB data. while ( $buff = $sth->blob_read(1,0,4096) ) { print OFILE $buff; $buff = q(); } } else { printf STDERR ("Cannot open output file #%03d", $count); } } } else { printf STDERR ("Cannot open output file: $!\n"); } At this point, the data LOB data for each record will be stored in a files named ofile.001, ofile.002, ... ofile.00n in your current working directory. I hope I'm getting at what you are asking. stph -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] Sent: Wednesday, February 27, 2002 5:28 AM To: [EMAIL PROTECTED] Cc: [EMAIL PROTECTED] Subject: Re: SELECT \$moid FROM xyz.abc Hello, Still need help..... So far the discussions have revolved around getting the $moid to be passed on to DB2. I think this is already being done because I do get a list. The problem is that the list is all SQL_BINARY data since &char is being stored in that column. The question is : How do I DEREF the address? [snip...] ********************************************************************** This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify the system manager. This footnote also confirms that this email message has been swept by MIMEsweeper for the presence of computer viruses. ********************************************************************** ********************************************************************** This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify the system manager. This footnote also confirms that this email message has been swept by MIMEsweeper for the presence of computer viruses. **********************************************************************
