我有这个 SQL 函数:
CREATE FUNCTION Average (@year int)
RETURNS decimal(4,2)
AS
BEGIN
DECLARE @result as decimal(4,2);
SET @result = (SELECT AVG(CAST(MilkQuantity AS decimal(4,2))) FROM MilkProduction WHERE YEAR(Date) = @year);
RETURN @result;
END
GO
如何在 java 中执行此函数以及将其绑定(bind)到什么数据类型?
这是我想出的方法,它有效,但似乎我在这里的线条之外着色:
PreparedStatement ps = con.prepareStatement("SELECT dbo.Average(" + year + ")");
ResultSet rs = ps.executeQuery();
rs.next();
System.out.println("Average: " + rs.getFloat(""));
最佳答案
使用 CallableStatement 如下:
CallableStatement stmt = null;
String sql = "begin ? := Average(?); end;";
ResultSet rs = null;
try {
stmt = conn.prepareCall(sql);
stmt.registerOutParameter(1, INT);
stmt.setString(2, "VALUE");
stmt.execute();
}
Catch(){ ....}
关于java - 在Java中执行用户定义的SQL Server函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18927276/