简体   繁体   English

从存储过程返回空值

[英]Null value is returned from stored procedure

I have stored procedure which returns username. 我有存储过程返回用户名。 I am calling stored procedure from java(EclipseIDE) . 我正在从java(EclipseIDE)调用存储过程。 The returned value from Stored procedure is Null. 从存储过程返回的值为Null。 How to avoid this Null Value. 如何避免此Null值。
This is my stored procedure 这是我的存储过程

USE `employee`;
DROP procedure IF EXISTS `add1`;
DELIMITER $$
USE `employee`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `add1`(IN UserId int,
                                                   IN UserFirstName varchar(50),
                                                   IN UserLastName varchar(50),
                                                   IN Education varchar(50),
                                                   IN MarksInME int,
                                                   IN MarksInBE int,
                                                   IN MarksInPUC int,
                                                   IN Gender varchar(50),
                                                   OUT UserName varchar(50))
  BEGIN
    declare varName varchar(50);
    select UserFirstName into varName from User where UserId=3516;
    set UserName=varName;
    insert into   user(UserId,UserFirstName,UserLastName,Education,MarksInME,MarksInBE,MarksInPUC,Gender)
    values(UserId,UserFirstName,UserLastName,Education,MarksInME,MarksInBE, MarksInPUC,Gender);

  END$$
DELIMITER ;

I am calling Stored Procedure: 我正在呼叫存储过程:

    java.sql.CallableStatement cStmt = conn.prepareCall("{call add1(?,?,?,?,?,?,?,?,?)}");
    cStmt.setInt(1,3541);    
    cStmt.setString(2,"pALLAVI"); 
    cStmt.setString(3,"K"); 
    cStmt.setString(4,"BE"); 
    cStmt.setInt(5,0);  
    cStmt.setInt(6,60); 
    cStmt.setInt(7,600);  
    cStmt.setString(8,"chetana@gmail.com"); 
    cStmt.registerOutParameter(9, java.sql.Types.VARCHAR);
    cStmt.execute();
    userName = cStmt.getString(9);

When I try to print the UserName its printed as Null? 当我尝试打印UserName时,将其打印为Null?

UserId is hardcoded: UserId是硬编码的:

select UserFirstName into varName from User where UserId=3516;

Please check below query: 请检查以下查询:

call add1(3541,'pALLAVI','K','BE',0,60,600,'chetana@gmail.com',@UserName);
SELECT @UserName;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM