带输出参数的存储过程
先看下面的一小段存储过程: ALTER procedure [dbo].[StuInfo_GetStuInfo_CardID] @CardID varchar(20),@Available varchar(20),@intCountCardID intoutput as begin select @intCountCardID= count(CardID) from StudentInfo where CardID=@CardID andAvailable=@Available end 迫于无奈将存储过程做了一下修改,去掉了输出参数: select count(CardID) from StudentInfo where CardID=@CardID and Available=@Available 经过这样修改之后可以正常运行,仔细分析了一下问题应该出在存储过程的输出参数和datareader的读取数据的数据类型对象上。 在存储过程中,指明的输出类型是一个整型数据,而不是从数据库表中直接读取,或者经过查询语句得到的临时的表数据,而datareader支持的数据源对象是基于数据库的相关的数据类型,因此,始终无法获取数据。 我们可以在数据访问层加上一句话来验证在vb.net的数据访问层指定的对应存储过程的输出变量(sqlParamIntCountCardID)已经获得了数据。 MsgBox(sqlParamIntCountCardID.Value.ToString) 调试这段程序用了很长时间,不过总算是有收获,从这次犯得错误中明白了datareader对象和存储过程的输出参数这两种程序元素的使用规则,从更深一个层次上明白了,学习看本质的重要性!我觉得写程序是一个锻炼我们思维严密性的一个过程,编写程序是一件锻炼人的事儿,在学习程序之初,更多的是锻炼和提升,到了后期就是一种享受了,我想这也就是程序员的快乐之一吧! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |