在PL/SQL中设置BindByName
我对绑定变量有问题(默认设置为BindByPosition的specyfic)。例如,我有如下程序:在PL/SQL中设置BindByName,sql,oracle,plsql,Sql,Oracle,Plsql,我对绑定变量有问题(默认设置为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,以使过程如下: DECL
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;
不能在动态sql中使用重复占位符,只能在pl/sql中使用
在中,您不能在动态sql中使用重复占位符,只能在pl/sql中使用
更多信息请参见您的示例不需要动态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;
/
您的示例不需要动态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;
/
当您尝试在动态查询中放置两个占位符时,它肯定需要两个绑定变量。不能将其更改为1。当您尝试在动态查询中放置两个占位符时,它肯定需要两个绑定变量。不能将其更改为1。