Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PL/SQL中设置BindByName_Sql_Oracle_Plsql - Fatal编程技术网

在PL/SQL中设置BindByName

在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

我对绑定变量有问题(默认设置为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;

不能在动态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。