存储过程判断问题
sql代码
use OperationDatagocreate procedure Pro_UserMax@maxNum int outputasbeginselect @maxNum=MAX(Convert(int,PerNum)) from Sys_userif @maxNum is null --@maxNum为null的话就返回10001return 10001else --否则返回最大值return @maxNumend
//获取最大值 public static int ExecuteMaxQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); using (SqlConnection conn = new SqlConnection(connectionString)) { PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); cmd.Parameters.Add("@maxNum", SqlDbType.Int).Direction = ParameterDirection.Output; cmd.ExecuteNonQuery(); //这里value的值怎么老是null 难道存储过程 根本就没执行 if..else..语句? int val = Convert.ToInt32(cmd.Parameters["@maxNum"].Value); //现在运行到这里就报错了 这里value的值为null 所以转换报错 return val; } }
use OperationDatagocreate procedure Pro_UserMax( @maxNum int output)asbeginselect @maxNum=MAX(Convert(int,PerNum)) from Sys_userif @maxNum is null --@maxNum为null的话就返回10001select @maxNum = 10001end
[解决办法]
create procedure dbo.Pro_UserMax @maxNum int outputASSET @maxNum=ISNULL((SELECT MAX(Convert(int,PerNum)) FROM Sys_user),10001);