2017-08-09 30 views
0

我有綁定變量的問題(與其默認設置BindByPosition specyfic)。例如,我有如下程序:在PL/SQL中設置BindByName

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爲真,有步驟是這樣的:

DECLARE 
    v_sql varchar2; 
BEGIN 
    v_sql := 'select :1 as field1, :1 as field2 from dual'; 
    EXECUTE IMMEDIATE v_sql USING 'test'; 
END; 
+0

當你嘗試把兩地人在你的動態查詢然後肯定會需要兩個綁定變量。它不能被改爲一個。 – XING

回答

1

動態SQL中不能使用重複佔位符,只有在PL/SQL。

documentation

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; 
/