Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3622964
А
Аноним
18 июня 2026 11:27 · публичный вопрос
А
Аноним

555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)

Нейросеть18 июня 2026 11:27

Short answer: It’s a PL/SQL call to Oracle’s DBMS_PIPE package intended to receive a message from a pipe with a 15-second timeout. CHR(99)||CHR(99)||CHR(99) evaluates to 'ccc'. However, as written the code is not valid because you cannot pass a literal to an IN OUT/OUT parameter.

What the snippet is trying to do

  • DBMS_PIPE.RECEIVE_MESSAGE waits up to the timeout (15 seconds) to read a message from a pipe and returns that message in the first parameter.
  • CHR(99)||CHR(99)||CHR(99) is just the string 'ccc', i.e., three 'c' characters. In a proper call this would be the variable that will receive the message, not a literal.
  • The 555* at the start is probably just an exam line-number or prefix, not part of the code.

How to fix it (correct usage)

  • You must pass a variable for the output, not a literal. Also you may specify the pipe name if your environment requires it (depending on version).

Example 1: using the two-argument form (no explicit pipe name)

  • PL/SQL: declare v_msg VARCHAR2(32767); begin DBMS_PIPE.RECEIVE_MESSAGE(v_msg, 15); -- wait up to 15 seconds DBMS_OUTPUT.PUT_LINE('Message: ' || v_msg); end; /

Example 2: using an explicit pipe name (three-argument form, if your version supports it)

  • PL/SQL: declare v_msg VARCHAR2(32767); v_pipe VARCHAR2(30) := 'MY_PIPE'; begin DBMS_PIPE.RECEIVE_MESSAGE(p_pipe => v_pipe, p_message => v_msg, p_timeout => 15); DBMS_OUTPUT.PUT_LINE('Message: ' || v_msg); end; /

Notes

  • Behavior on timeout depends on your Oracle version; the call may return with an empty/null message or raise an exception. Check the specific documentation for your version.
  • If you intended to send 'ccc' into a pipe, that would use DBMS_PIPE.SEND_MESSAGE, not RECEIVE_MESSAGE.
555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)
Short answer: It’s a PL/SQL call to Oracle’s DBMS_PIPE package intended to receive a message from a pipe with a 15-second timeout. CHR(99)||CHR(99)||CHR(99) evaluates to 'ccc'. However, as written the code is not valid because you cannot pass a literal to an IN OUT/OUT parameter. What the snippet is trying to do - DBMS_PIPE.RECEIVE_MESSAGE waits up to the timeout (15 seconds) to read a message from a pipe and returns that message in the first parameter. - CHR(99)||CHR(99)||CHR(99) is just the string 'ccc', i.e., three 'c' characters. In a proper call this would be the variable that will receive the message, not a literal. - The 555* at the start is probably just an exam line-number or prefix, not part of the code. How to fix it (correct usage) - You must pass a variable for the output, not a literal. Also you may specify the pipe name if your environment requires it (depending on version). Example 1: using the two-argument form (no explicit pipe name) - PL/SQL: declare v_msg VARCHAR2(32767); begin DBMS_PIPE.RECEIVE_MESSAGE(v_msg, 15); -- wait up to 15 seconds DBMS_OUTPUT.PUT_LINE('Message: ' || v_msg); end; / Example 2: using an explicit pipe name (three-argument form, if your version supports it) - PL/SQL: declare v_msg VARCHAR2(32767); v_pipe VARCHAR2(30) := 'MY_PIPE'; begin DBMS_PIPE.RECEIVE_MESSAGE(p_pipe => v_pipe, p_message => v_msg, p_timeout => 15); DBMS_OUTPUT.PUT_LINE('Message: ' || v_msg); end; / Notes - Behavior on timeout depends on your Oracle version; the call may return with an empty/null message or raise an exception. Check the specific documentation for your version. - If you intended to send 'ccc' into a pipe, that would use DBMS_PIPE.SEND_MESSAGE, not RECEIVE_MESSAGE.