0
我使用Java的callable
接口,並嘗試讀取SQL服務器中寫入的存儲過程的輸出變量值。SQL服務器異常:使用jdbc連接檢索數據時
存儲過程:
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
是用於檢索結果的輸入參數。它用來調用此存儲過程
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);
Java代碼,請幫我在這找出錯誤的原因。
在此先感謝。
感謝您的建議。我試過這個。但它沒有奏效。我得到異常「** SQLServerException:索引2超出範圍。**」 – Nazneen
這是因爲您只傳遞一個參數到存儲過程,需要兩個; Get_Project_Name_Test(?,?) – Sean
是的...非常感謝。它工作正常。我的印象是,在調用存儲過程時,我們只需要提供輸入參數。我現在得到了那部分。有用。再次感謝。 – Nazneen