RETURNING INTO clause saves us trip to over the network, but the target needs to be bound by reference, using "bind_param_inout" method.
I advocated the naming convention about naming placeholders and variables and violated it two scripts later. The answer is very simple: placeholder : FILE is reserved and cannot be used.
We can use normal binds, LOB variable is treated as any other variable would be.There are, however, some things that need careful handling.It is time to learn about some other properties of the database handles.Here they are, taken directly from the DBI online documentation: The Long Read Len attribute may be used to control the maximum length of 'long' type fields (LONG, BLOB, CLOB, MEMO, etc.) which the driver will read from the database automatically when it fetches each row of data.That memory buffer will then be inserted as a BLOB into the database.
Example 5 The execution of this script produces very unspectacular, if expected results: $ ./load_lobs -f adodb480BLOB ID=1 inserted $ ./load_lobs -f php-5.1.2bz2 BLOB ID=2 inserted So, lets check our work: The number of bytes in the database is equal to the number of bytes produced by the "ls -l" command, which means that both files are successfully loaded into my little home database.
Obviously, there are still things to discover about this particular combination. Few lines earlier, I said that LOB variables can be thought of as big VARCHAR2 variables.
That especially applies to selecting them from the database.
Databases that are known for encouraging such development style are Sybase and SQL Server.
Any migration of a program which runs against SQL Server or Sybase to a Perl script that runs against Oracle database is likely to need REF Cursor variables.
For most drivers the value used here has a direct effect on the memory used by the statement handle while it's active, so don't be too generous.