CHR(99) is the character 'c' (ASCII 99). So CHR(99)||CHR(99)||CHR(99) evaluates to 'ccc'.
The call DBMS_PIPE.RECEIVE_MESSAGE(...) is Oracle PL/SQL for receiving a message from a pipe. However, as written, the code is problematic:
- The first parameter to RECEIVE_MESSAGE is not a literal; it must be a variable that will receive the incoming message (an IN OUT or OUT parameter). You cannot pass the string literal 'ccc' directly.
- The timeout argument is typically an integer (seconds). A value like 15.758 is not an integer; depending on the exact signature and Oracle version, this could cause a type error or be truncated to an integer.
In short, the exact expression 555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15.758) is not valid PL/SQL as written.
If you want to receive a message, you should use a variable for the message and pass an integer timeout, e.g.:
declare v_msg varchar2(4000); v_status integer; begin v_msg := null; dbms_pipe.receive_message(v_msg, v_status, 15); -- timeout as integer seconds dbms_output.put_line('Message: '||nvl(v_msg,'
')||' Status: '||v_status); end; Here:
- v_msg will contain the received message (if any) when the call returns.
- The timeout is 15 seconds (an integer).
If you can share the exact signature you’re targeting for RECEIVE_MESSAGE in your environment (and the intended pipe name, if applicable), I can tailor the correction precisely.