本篇演示如何編寫支援模糊查詢的存儲過程(使用 LIKE 通配符),並在 Java 中傳入查詢關鍵字、獲取結果集。
create procedure FindCusts
@cust varchar(10)
as
select customerid from orders where customerid like '%' + @cust + '%'
執行測試:execute FindCusts 'alfki'
import java.sql.*;
public class ProcedureTest {
public static void main(String args[]) throws Exception {
DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
Connection conn = DriverManager.getConnection("jdbc:odbc:mydata", "sa", "");
// 1. 準備調用,單一輸入參數
CallableStatement c = conn.prepareCall("{call FindCusts(?)}");
// 2. 設置參數值
c.setString(1, "Tom");
// 3. 執行查詢
ResultSet rs = c.executeQuery();
// 4. 遍歷結果集
while (rs.next()) {
String cust = rs.getString("customerid");
System.out.println(cust);
}
c.close();
conn.close();
}
}
'%' + @cust + '%',Java 傳入純關鍵字即可,避免在應用層拼接 SQL 片段。{call FindCusts(?)} 只有一個佔位符,setString(1, "Tom") 設置。executeQuery() 而非 execute()。若需支援多條件動態模糊查詢,可考慮:
PreparedStatement 動態拼接 SQL(靈活但失去存儲過程封裝優勢)。