Использование переменных связывания с динамическим предложением SELECT INTO в PL / SQL

У меня есть вопрос относительно того, где переменные связывания могут использоваться в динамическом операторе SQL в PL / SQL.

Например, Я знаю, что это действительно так:

CREATE OR REPLACE FUNCTION get_num_of_employees (p_loc VARCHAR2, p_job VARCHAR2) 
RETURN NUMBER
IS
  v_query_str VARCHAR2(1000);
  v_num_of_employees NUMBER;
BEGIN
  v_query_str := 'SELECT COUNT(*) FROM emp_' 
                 || p_loc
                 || ' WHERE job = :bind_job';                           
  EXECUTE IMMEDIATE v_query_str
    INTO v_num_of_employees
    USING p_job;
  RETURN v_num_of_employees;
END;
/

Мне было интересно, можно ли использовать переменные связывания в операторе выбора, подобном этому

CREATE OR REPLACE FUNCTION get_num_of_employees (p_loc VARCHAR2, p_job VARCHAR2) 
RETURN NUMBER
IS
  v_query_str VARCHAR2(1000);
  v_num_of_employees NUMBER;
BEGIN
  v_query_str := 'SELECT COUNT(*) INTO :into_bind FROM emp_' 
                 || p_loc
                 || ' WHERE job = :bind_job';                           
  EXECUTE IMMEDIATE v_query_str
    USING out v_num_of_employees, p_job;
  RETURN v_num_of_employees;
END;
/

Примечание. Я использовал оператор SELECT INTO в качестве динамической строки и использовал переменную связывания в предложении INTO.

Я сейчас путешествую, и у меня не будет доступа к моему компьютеру дома в течение нескольких дней, но меня это немного беспокоило. Пытался прочитать справочник по PL / SQL, но у них нет пример такого выбора.

Спасибо

42
задан J. Chomel 3 July 2017 в 06:28
поделиться