首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

存储过程判断有关问题

2012-10-19 
存储过程判断问题sql代码SQL codeuse OperationDatagocreate procedure Pro_UserMax@maxNum int outputasb

存储过程判断问题
sql代码

SQL code
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

@maxNum的值为null 存储过程应该返回的是10001

C#代码
C# code
//获取最大值        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;            }        }


求各位大侠帮忙分析下 sql语句 有没有问题
为什么@maxNum 的value 老是null

[解决办法]
SQL code
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
[解决办法]
SQL code
create procedure dbo.Pro_UserMax    @maxNum int outputASSET @maxNum=ISNULL((SELECT MAX(Convert(int,PerNum))     FROM Sys_user),10001); 

热点排行