[英]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.