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

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

Нейросеть18 июня 2026 10:49

Short answer: This is an Oracle DBMS_PIPE call to receive a message from a pipe with a 15-second timeout. However, as written it’s not a valid usage, because RECEIVE_MESSAGE expects a writable buffer variable, not a literal like CHR(99)||CHR(99)||CHR(99).

What CHR(99)||CHR(99)||CHR(99) means

  • CHR(99) = the character 'c'
  • CHR(99)||CHR(99)||CHR(99) = 'ccc'

But you don’t pass a string literal as the OUT buffer. RECEIVE_MESSAGE should be given a buffer variable that will be filled with the incoming message.

Correct usage (illustrative; exact types depend on your DB version)

Option 1: buffer as RAW DECLARE l_msg RAW(32767); BEGIN DBMS_PIPE.RECEIVE_MESSAGE(l_msg, 15); -- wait up to 15 seconds IF l_msg IS NULL THEN DBMS_OUTPUT.PUT_LINE('No message within timeout'); ELSE DBMS_OUTPUT.PUT_LINE('Received: ' || UTL_RAW.CAST_TO_VARCHAR2(l_msg)); END IF; END;

Option 2: buffer as VARCHAR2 (if your environment supports it) DECLARE l_msg VARCHAR2(32767); BEGIN DBMS_PIPE.RECEIVE_MESSAGE(l_msg, 15); -- wait up to 15 seconds IF l_msg IS NULL THEN DBMS_OUTPUT.PUT_LINE('No message within timeout'); ELSE DBMS_OUTPUT.PUT_LINE('Received: ' || l_msg); END IF; END;

What the call does

  • Waits for a message on the pipe (the pipe must have been created and a message sent by someone else on a possibly different session).
  • Waits up to 15 seconds (timeout).
  • If a message arrives within the timeout, the buffer is filled with the message content.
  • If no message arrives, the buffer becomes NULL (or empty, depending on datatype).

Note

  • The line you posted looks like an exam formatting artifact (the “555*” part). It’s not part of the SQL/Pkg usage.
  • CHR(99)||CHR(99)||CHR(99) = 'ccc' only demonstrates a value; in real code you would pass a buffer variable, not a literal.

If you want, tell me which Oracle version you’re using and whether you’re using RAW or VARCHAR2 for messages, and I’ll tailor a exact snippet.

555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)
Short answer: This is an Oracle DBMS_PIPE call to receive a message from a pipe with a 15-second timeout. However, as written it’s not a valid usage, because RECEIVE_MESSAGE expects a writable buffer variable, not a literal like CHR(99)||CHR(99)||CHR(99). What CHR(99)||CHR(99)||CHR(99) means - CHR(99) = the character 'c' - CHR(99)||CHR(99)||CHR(99) = 'ccc' But you don’t pass a string literal as the OUT buffer. RECEIVE_MESSAGE should be given a buffer variable that will be filled with the incoming message. Correct usage (illustrative; exact types depend on your DB version) Option 1: buffer as RAW DECLARE l_msg RAW(32767); BEGIN DBMS_PIPE.RECEIVE_MESSAGE(l_msg, 15); -- wait up to 15 seconds IF l_msg IS NULL THEN DBMS_OUTPUT.PUT_LINE('No message within timeout'); ELSE DBMS_OUTPUT.PUT_LINE('Received: ' || UTL_RAW.CAST_TO_VARCHAR2(l_msg)); END IF; END; Option 2: buffer as VARCHAR2 (if your environment supports it) DECLARE l_msg VARCHAR2(32767); BEGIN DBMS_PIPE.RECEIVE_MESSAGE(l_msg, 15); -- wait up to 15 seconds IF l_msg IS NULL THEN DBMS_OUTPUT.PUT_LINE('No message within timeout'); ELSE DBMS_OUTPUT.PUT_LINE('Received: ' || l_msg); END IF; END; What the call does - Waits for a message on the pipe (the pipe must have been created and a message sent by someone else on a possibly different session). - Waits up to 15 seconds (timeout). - If a message arrives within the timeout, the buffer is filled with the message content. - If no message arrives, the buffer becomes NULL (or empty, depending on datatype). Note - The line you posted looks like an exam formatting artifact (the “555*” part). It’s not part of the SQL/Pkg usage. - CHR(99)||CHR(99)||CHR(99) = 'ccc' only demonstrates a value; in real code you would pass a buffer variable, not a literal. If you want, tell me which Oracle version you’re using and whether you’re using RAW or VARCHAR2 for messages, and I’ll tailor a exact snippet.