首页 文章

SQL服务器异常:使用jdbc连接检索数据时

提问于
浏览
0

我使用Java的 callable 接口并尝试读取SQL Server中编写的存储过程的输出变量值 .

存储过程:

CREATE PROCEDURE [Get_Project_Name_Test] 
    @project_id int,
    @project_name varchar(150) OUTPUT
AS
BEGIN
    SET NOCOUNT ON;
    SET @project_name = (SELECT Name from Project where Project_Id = @project_id)
END
GO

这里 @project_id 是输入变量, @project_name 是输出变量 . 我想从Java应用程序中读取输出变量的这个值 . 当我运行代码时,我得到一个sql异常 .

它说:

形式参数“@project_id”未声明为OUTPUT参数,而是在请求的输出中传递的实际参数 .

实际上,这不是输出参数 . @project_id 是用于检索结果的输入参数 .

用于调用此存储过程的Java代码

CallableStatement cstmt = con.prepareCall("{call Get_Project_Name_Test(?)}");
cstmt.setInt(1, 148);
cstmt.registerOutParameter(1, java.sql.Types.VARCHAR);
cstmt.executeQuery();
String x = cstmt.getString(1);
System.out.println(x);

请帮我解决这个错误的原因 .

提前致谢 .

1 回答

  • 2

    应该

    cstmt.registerOutParameter(1, java.sql.Types.VARCHAR);
    

    cstmt.registerOutParameter(2, java.sql.Types.VARCHAR);
    

相关问题