PL/SQLの動的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 リファレンスを読んでみましたが、このような選択の例はありません。
ありがとう