簡體   English   中英

我如何從sqlserver存儲過程的return語句獲取值到Java?

[英]how i get a value from a return statement of sqlserver stored procedure to java?

我正在嘗試進入一個名為valorReturn的變量,該變量在我的sql server存儲過程中... sqlserver存儲過程工作正常,但問題是java ..

create procedure login
@cliente varchar(10),@pw varchar(10)
as begin
if exists(select cliente from seg where cliente=@cliente)
begin
if(select pw from seg where cliente=@cliente)=@pw
begin
   if(select privilegio from seg where cliente=@cliente)=0 begin
print 0
return 0
end
end

exec 'xd','xd'

在這里,我從打印行收到一條消息:0

因此,我應該能夠使用該JAVA代碼獲取值並將其設置為變量valorReturn

String consulta="exec login '"+usr+"','"+pw+"'";
CallableStatement st=con.prepareCall(consulta);
st.setInt(1,10);
st.registerOutParameter(1, Types.INTEGER);
st.execute();
int valorReturn=st.getInt(1);

這是控制台中打印的異常

com.microsoft.sqlserver.jdbc.SQLServerException:索引1超出范圍。

謝謝,我感謝任何幫助! :)

SQL需要提供一個綁定的輸出參數。

SQL:

create procedure login
    @cliente varchar(10), @pw varchar(10), @result INT = -1 OUTPUT
    as begin
    if exists(select cliente from seg where cliente=@cliente)
    begin
    if(select pw from seg where cliente=@cliente)=@pw
        begin
        if(select privilegio from seg where cliente=@cliente)=0 begin
        print 0
        SET @result = 0 -- new parameter
       return 0
    end
end

Java:

    String consulta="exec login ?,?,?"; //moved out to parameters to avoid SQL injection.
    CallableStatement st= con.prepareCall(consulta);
    st.setString(1,usr);
    st.setString(2,pw);
    st.registerOutParameter(3, Types.INTEGER);
    st.execute();
    int valorReturn=st.getInt(3);

可以在https://docs.microsoft.com/zh-cn/sql/connect/jdbc/using-a-stored-procedure-with-output-parameters中找到更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM