What you posted is Oracle PL/SQL using the DBMS_PIPE package.
- CHR(99) yields the character with code 99, which is 'c' in ASCII. So CHR(99)||CHR(99)||CHR(99) becomes 'ccc'.
- Therefore the call is trying to receive a message from the pipe named "ccc" with a timeout of 15 seconds.
Notes and a complete example:
In many versions of Oracle, you first open the pipe, then call RECEIVE_MESSAGE to fetch the next message from the currently opened pipe. A typical complete pattern is:
- OPEN_PIPE('ccc');
- RECEIVE_MESSAGE(l_msg, 15);
- (use l_msg as the received data)
If no message arrives within 15 seconds, the call times out (the exact behavior—whether it returns an empty message or raises an exception—depends on the Oracle version).
The snippet you posted is incomplete as shown because RECEIVE_MESSAGE usually writes the received data to an OUTPUT variable. A minimal complete version would look like:
- DECLARE l_msg VARCHAR2(4000); BEGIN DBMS_PIPE.OPEN_PIPE('ccc'); DBMS_PIPE.RECEIVE_MESSAGE(l_msg, 15); DBMS_OUTPUT.PUT_LINE('received: ' || l_msg); END;
If you want, tell me your Oracle version and I’ll tailor the exact syntax and the expected behavior.
