簡體   English   中英

我無法使用 Oracle Sql 查詢在 java 中設置參數

[英]I can't set parameters in java using Oracle Sql query

我有一個數據庫 Oracle 12 並查詢“ALTER USER GISDPFB SET DEFAULT TABLESPACE DEV_MDS”查詢是正確的,我可以手動執行它,但我不能動態設置參數。 我的代碼:

 callableStatement = connection.prepareCall("ALTER USER ? DEFAULT TABLESPACE ?");
    callableStatement.setString(1,"John");
    callableStatement.setString(2,"SYSAUX");
    callableStatement.execute();

我得到'java.sql.SQLSyntaxErrorException:ORA-01935:缺少用戶或角色名稱'

我猜這個異常是因為語法錯誤,但是我在控制台中成功了

您只能將綁定變量用於值,而不是標識符 - 用戶名和表空間名稱都是。 您需要將它們嵌入到語句中:

callableStatement = connection.prepareCall("ALTER USER \"John\" DEFAULT TABLESPACE \"SYSAUX\"");
callableStatement.execute();

或者如果這些值來自 Java 變量:

callableStatement = connection.prepareCall("ALTER USER \"" + userName
  + "\" DEFAULT TABLESPACE \"" + tablespaceName + "\"");
callableStatement.execute();

如果它們來自變量,您可能希望查看添加dbms_assert檢查。

我很確定ALTER USER被認為是 DLL 並且不采用綁定變量。 您可能只需要為它創建一個字符串。 嘗試:

callableStatement = connection.prepareCall("ALTER USER john DEFAULT TABLESPACE SYSAUX");
callableStatement.execute();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM