Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

DBMS_PIPE size Question

627 views
Skip to first unread message

James Lorenzen

unread,
Apr 4, 1997, 3:00:00 AM4/4/97
to

We are workin on a project that will be using DBMS_PIPE and a Pro*C program
to pass UNIX system commands to UNIX and receive the output from the
commands back into PL/SQL packages.

Using:
SCO UNIX 3.0.0
Oracle 7.1.3
Pro*C 2.0.3.0.0
PL/SQL 2.1.3

We are having some problems with size when packing a buffer into the pipe
we get a size error "ORA-06558: buffer in dbms_pipe package is full. No
Items allowed" This happens when the string to be packed is 4091 and the
max pipe length is set to 8192. If we set the string to be 1024 and the
max pipe length to be 8192 the command works.

Is there some sizing relationship between the pack size and the max pipe
length. The package specification for dbms_pipe states that the max for
the pack size is just under 4k.

Does anyone out there have any ideas or pointers. We have gotten thing
working by trial and error, but it would be nice to know what the actual
requirements are.

TIA
James
--
lore...@visi.com | Life is complex; it has
| real and imaginary parts

Diana Duncan

unread,
Apr 7, 1997, 3:00:00 AM4/7/97
to

The maxpipesize is not the same as the message buffer size (strangely).
The maxpipesize basically limits the total amount of bytes you can pack
into a pipe before it croaks or waits for you to unpack it. Notice that
the current maximum value for one message is
4096-(1*#_of_items)-(2*#_of_items)-1, so if your #_of_items = 1, your
maximum value is 4092, which, although it is stating the painfully
obvious, does NOT explain why your item of size *4091* is not working.

procedure pack_message_rowid(item in rowid);
-- Pack an item into the message buffer
-- Input parameters:
-- item
-- Item to pack into the local message buffer.
-- Exceptions:
-- ORA-06558 generated if message buffer overflows (currently 4096
-- bytes). Each item in the buffer takes one byte for the type,
-- two bytes for the length, plus the actual data. There is also
one
-- byte needed to terminate the message.
--

So, I don't know if this is helpful or not (probably not) but it will at
least give you ammunition when you call support.
--
Diana Duncan | My opinions are my own.
Sr. Consultant |
REALOGIC, Inc. | Excitement, Adventure and
ddu...@realogic.com | Really Wild Things - Z.B.

0 new messages