Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

Re^4: sql2008 Filestream

by ksublondie (Friar)
on Mar 02, 2011 at 00:32 UTC ( #890872=note: print w/replies, xml ) Need Help??

in reply to Re^3: sql2008 Filestream
in thread sql2008 Filestream

Slowly making progress...

FINALLY retrieved my ps content from the db, however, I have discovered that I'm also concatenating the data inserted into the table. Selecting is fixed...back to working on getting the data in there. I've applied the blob update code from the DBD::Sybase documentation you linked, but now I'm getting:

DBD::Sybase::st syb_ct_send_data failed: Server message number=102 sev +erity=15 state=1 line=1 server=SQL2008\SQL2008 text=Incorrect syntax near '0x00000000000000000000000000000000'.
My previous insert was letting sql convert the binary for me. But, now I'm not sure if I'm converting the binary data correctly in this method or not.
sub printTransaction{ ... my $statement ="insert into PrintedChecks (Checkid,[datetime],id,print +edby,data) values (?,?,?,?,cast(? as varbinary(MAX))) "; my $sth=$db->prepare($statement); eval{ $sth->execute(($checkid,$now,$id,$userid,'')); }; if ($@){ $db->rollback; return 0; } $db->commit; $sth = $db->prepare("select data from printedchecks where id = '$id'") +; $sth->execute; while($sth->fetch) {$sth->syb_ct_data_info('CS_GET', 1);} $sth->syb_ct_prepare_send(); my $binary = pack("b*", $print); #Is this right??? $sth->syb_ct_data_info('CS_SET', 1, {total_txtlen => length($binary), +log_on_update => 0}); $sth->syb_ct_send_data($binary, length($binary)); $sth->syb_ct_finish_send(); ... }

Replies are listed 'Best First'.
Re^5: sql2008 Filestream
by Eliya (Vicar) on Mar 02, 2011 at 02:45 UTC
    my $binary = pack("b*", $print); #Is this right???

    pack("b*",...) packs a "bit string", i.e. a string consisting of "0" and "1" (ASCII 48 and 49), e.g.

    print pack("b*", "011001101111011011110110") # --> "foo"

    but Postscript content doesn't consist of solely ASCII zeros and ones, so this is most likely not correct.

    My guess would be that you don't need to do anything with $print.  Just treat it as binary data (any string is "binary" in the wider sense, even if it's ASCII/7-bit only), i.e. use $print where you now have $binary.

      Hmmmm...well if I pass an unchanged $print to the server, I get the exact same error. I even played around some more to finally get $print into true binary (took me awhile to finally figure out pack), but once again, I get the exact same error. How can I be getting the exact same error when I change the content???

        Not sure what you mean by "true binary".  Anyway, I don't think it has anything to do with the way you format the bulk data.  Rather, it seems to be a bug with DBD::Sybase — at least you're not alone: see [freetds] DBD::Sybase: ct_send_data example fails.

        Sorry, can't help with debugging, as I don't have MS SQL Server.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://890872]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (8)
As of 2017-02-24 21:53 GMT
Find Nodes?
    Voting Booth?
    Before electricity was invented, what was the Electric Eel called?

    Results (363 votes). Check out past polls.