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

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

Нейросеть18 июня 2026 14:20

Short answer: It’s trying to receive a message from a DBMS_PIPE named 'ccc' with a timeout, but as written it’s not a complete valid call in PL/SQL.

What the pieces mean:

  • CHR(99)||CHR(99)||CHR(99) → 'ccc' (three ASCII 99 characters).
  • 23.733 → the timeout. The RECEIVE_MESSAGE procedure expects an integer timeout (in seconds). The decimal part may be coerced to an integer or cause an error depending on your Oracle version. In practice you should pass an integer (e.g., 23 or 24).

Important missing piece:

  • RECEIVE_MESSAGE doesn’t return the message by itself. You must provide an OUT parameter (or use GET_MESSAGE) to retrieve the actual data that was received. The snippet as written does not show where the received message goes.

Example of corrected usage (typical pattern; exact parameter names may vary by Oracle version):

  • Using named parameters (common style): DECLARE v_pipe VARCHAR2(30) := 'ccc'; v_msg VARCHAR2(32767); v_len PLS_INTEGER; BEGIN DBMS_PIPE.RECEIVE_MESSAGE(p_pipe => v_pipe, p_timeout => 23); DBMS_PIPE.GET_MESSAGE(p_message => v_msg, p_length => v_len); DBMS_OUTPUT.PUT_LINE('Received: ' || v_msg); END;

  • If your version uses RAW for messages, adapt types accordingly (e.g., RAW and length). The key is: provide an OUT variable to receive the message (and then read/convert it as needed).

If you’re aiming for a quick syntactic check, you can also use a literal pipe name: DBMS_PIPE.RECEIVE_MESSAGE(p_pipe => 'ccc', p_timeout => 23);

What would you like to do next?

  • Tell me your Oracle version, and I’ll give the exact parameter list.
  • I can tailor a complete small example (producer and consumer) that runs in a container block.
555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),23.733)
Short answer: It’s trying to receive a message from a DBMS_PIPE named 'ccc' with a timeout, but as written it’s not a complete valid call in PL/SQL. What the pieces mean: - CHR(99)||CHR(99)||CHR(99) → 'ccc' (three ASCII 99 characters). - 23.733 → the timeout. The RECEIVE_MESSAGE procedure expects an integer timeout (in seconds). The decimal part may be coerced to an integer or cause an error depending on your Oracle version. In practice you should pass an integer (e.g., 23 or 24). Important missing piece: - RECEIVE_MESSAGE doesn’t return the message by itself. You must provide an OUT parameter (or use GET_MESSAGE) to retrieve the actual data that was received. The snippet as written does not show where the received message goes. Example of corrected usage (typical pattern; exact parameter names may vary by Oracle version): - Using named parameters (common style): DECLARE v_pipe VARCHAR2(30) := 'ccc'; v_msg VARCHAR2(32767); v_len PLS_INTEGER; BEGIN DBMS_PIPE.RECEIVE_MESSAGE(p_pipe => v_pipe, p_timeout => 23); DBMS_PIPE.GET_MESSAGE(p_message => v_msg, p_length => v_len); DBMS_OUTPUT.PUT_LINE('Received: ' || v_msg); END; - If your version uses RAW for messages, adapt types accordingly (e.g., RAW and length). The key is: provide an OUT variable to receive the message (and then read/convert it as needed). If you’re aiming for a quick syntactic check, you can also use a literal pipe name: DBMS_PIPE.RECEIVE_MESSAGE(p_pipe => 'ccc', p_timeout => 23); What would you like to do next? - Tell me your Oracle version, and I’ll give the exact parameter list. - I can tailor a complete small example (producer and consumer) that runs in a container block.