我有一個用 Java 撰寫的 SQL 查詢,它應該連接到 Snowflake 資料庫。
我正在使用jdbc模板連接到 Snowflake,這是我正在使用的字串:
url: jdbc:snowflake://xxxxx.eu-central-1.snowflakecomputing.com/?db=DATABASE_NAME&warehouse=TEST_WAREHOUSE&schema=PUBLIC&role=SYSADMIN
user: username
password: password
這是查詢:
public void EPI_GAME_REP_QUERY(String id) {
long userId = Long.parseLong(id);
String REP_QUERY = "SELECT \n"
" \"ProductName\",\n"
" \"UserID\",\n"
" \"UserName\",\n"
" FROM \"DATABSE4\".\"RAW_DATA\".\"BETA\"\n"
" WHERE \"UserID\" = ? \n"
" UNION ALL\n"
" SELECT \n"
" \"ProductName\",\n"
" \"UserID\",\n"
" \"UserName\",\n"
" FROM \"DATABASE3\".\"RAW_DATA\".\"BETAC\"\n"
" WHERE \"UserID\" = ? \n"
" UNION ALL\n"
" SELECT \n"
" \"ProductName\",\n"
" \"UserID\",\n"
" \"UserName\",\n"
" FROM \"DATABASE1\".\"RAW_DATA\".\"ACTIVITY\"\n"
" WHERE \"UserID\" = ? \n"
" UNION ALL\n"
" SELECT \n"
" \"ProductName\",\n"
" \"StartTime\",\n"
" \"UserID\",\n"
" \"UserName\",\n"
" FROM \"DATABASE1\".\"RAW_DATA\".\"HISTORY\"\n"
" WHERE \"UserID\" = ? \n"
" ORDER BY \"StartTime\" ASC;";
log.info("Executing query...");
jdbcTemplate.query(REP_QUERY, rs -> {
}, userId);
}
我id作為引數傳遞,因為它String type在代碼和number type資料庫中,所以我將它決議為int.
當我運行代碼時,我收到此錯誤:
nested exception is net.snowflake.client.jdbc.SnowflakeSQLException: SQL compilation error: error line 33 at position 29
Bind variable ? not set.
uj5u.com熱心網友回復:
您的 SQL 請求包含多個要系結的變數(每個 '?' 一個),您必須為每個變數提供一個值:
jdbcTemplate.query(REP_QUERY, rs -> {}, userId, userId, userId, userId);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/339652.html
