奇怪啊,在我的存储过程中,有这么个片断,insert into imeet.T_User(LoginName,NickName,)values(Login_Name,Nick_Name);select $UserID = UserID from t_user where LoginName = Login_Name;结果$UserID 为空值,但是如果我上面的改为select * from t_user where LoginName = Login_Name;在调用端的dataset中就存在刚才插入的一行数据。UserID是t_user 表的 primary_key ,并且是auto_increable.请问我哪里出了问题吗?是不是在Mysql 中不能直接这么得到ID 值?

解决方案 »

  1.   

    把$UserID 作为存储过程的输出参数。
      

  2.   

    与这个没有关系,因为执行select $UserID = UserID from t_user where LoginName = Login_Name;本身就失败,如果执行UserID from t_user where loginname = Login_Name;却有值,为什么会是这样
      

  3.   

    id作为主键,用函数LAST_INSERT_ID()得到。
      

  4.   

    我用 select $UserID = LAST_INSERT_ID();
    $UserID 返回值也是为System.DBNull,好像用Set $UserID = LAST_INSERT_ID();是可以的,SELECT 和 SET的区别在哪里呢?
      

  5.   

    select UserID from t_user where LoginName = Login_Name into $UserID;
      

  6.   

    select UserID into @UserID from t_user where LoginName = Login_Name;这样试试,注意 ‘$’ 改为 ‘@’ 了。