我遇到绑定变量的问题(使用默认设置BindByPosition是specyfic)。例如,我有如下程序:
DECLARE
v_sql varchar2;
BEGIN
v_sql := 'select :1 as field1, :1 as field2 from dual';
EXECUTE IMMEDIATE v_sql USING 'test', 'test';
END;
现在我需要输入' test'两次。如何将BindByName更改为true,以具有以下过程:
DECLARE
v_sql varchar2;
BEGIN
v_sql := 'select :1 as field1, :1 as field2 from dual';
EXECUTE IMMEDIATE v_sql USING 'test';
END;
答案 0 :(得分:1)
您不能在动态sql中使用重复占位符,只能在pl / sql中使用。
中的更多内容答案 1 :(得分:1)
您的示例不需要动态SQL:
DECLARE
val VARCHAR2(20) := 'Test';
field1 VARCHAR2(20);
field2 VARCHAR2(20);
BEGIN
SELECT val, val
INTO field1, field2
FROM DUAL;
END;
/
或者,没有SQL:
DECLARE
val VARCHAR2(20) := 'Test';
field1 VARCHAR2(20);
field2 VARCHAR2(20);
BEGIN
field1 := val;
field2 := val;
END;
/