【发布时间】:2011-12-10 14:40:58
【问题描述】:
我有一个关于在 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 参考,但他们没有这样的选择示例。
谢谢
【问题讨论】:
标签: sql oracle plsql oracle11g execute-immediate