在Java中执行用户定义的SQL Server函数
我有一个SQL函数:在Java中执行用户定义的SQL Server函数,java,sql,sql-server,Java,Sql,Sql Server,我有一个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
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中执行这个函数,我甚至要将它绑定到什么数据类型
这是我想到的,它是有效的,但我似乎在这里的线条外着色:
PreparedStatement ps = con.prepareStatement("SELECT dbo.Average(" + year + ")");
ResultSet rs = ps.executeQuery();
rs.next();
System.out.println("Average: " + rs.getFloat(""));
使用CallableStatement,如下所示:
CallableStatement stmt=null;
字符串sql=“begin?:=Average(?);end;”;
结果集rs=null;
试试{
stmt=conn.prepareCall(sql);
stmt.registerOutParameter(1,INT);
标准设置字符串(2,“值”);
stmt.execute();
}
Catch(){…}
这取决于数据库引擎。例如,这在oracle上不起作用。我相信此语法仅适用于MS产品。