Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中执行用户定义的SQL Server函数_Java_Sql_Sql Server - Fatal编程技术网

在Java中执行用户定义的SQL Server函数

在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

我有一个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中执行这个函数,我甚至要将它绑定到什么数据类型

这是我想到的,它是有效的,但我似乎在这里的线条外着色:

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产品。