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

存储过程,参数未提供,但是已经提供了,仍是报错

2011-12-26 
存储过程,参数未提供,但是已经提供了,还是报错一个存储过程,如下:CREATEPROCEDURERegisterNewBook@CoverNV

存储过程,参数未提供,但是已经提供了,还是报错
一个存储过程,如下:

CREATE   PROCEDURE   RegisterNewBook
@Cover   NVARCHAR(1000),--图书的封面
@OldISBN   NVARCHAR(20),   --图书旧的ISBN号
@NewISBN   NVARCHAR(20),   --图书新的ISBN号,如果遇到旧的10位ISBN则进行转化到13位的新ISBN
@BookName   NVARCHAR(100),   --图书名
@Author   NVARCHAR(100),   --图书作者
@BookPrice   NUMERIC(18,2),   --书价
@CD   BIT,--是否有光盘
@BookIntroduction   NVARCHAR(4000),   --图书部分章节简介
@BookType   TINYINT,   --图书种类,1图书,2期刊,3其他
@PublishDateText   NVARCHAR(50),   --存原始输入值(出版社的原始日期,一般不规范)
@PublishDateTime   DATETIME,   --出版日期,存入数据库前就转换成日期格式(方便搜索)
@PublishName   NVARCHAR(50),   --出版社
@ChinaSort   NVARCHAR(25),   --中图分类号
@DepartmentID   INT,   --图书馆编号
@FatherID   INT,   --学校编号
@Abstract   NVARCHAR(4000),   --   图书内容提要
@AuthorIntroduction   NVARCHAR(MAX),--作者简介
@Catalog   NVARCHAR(MAX),--图书目录
@BookPage   INT,   --图书页码
@BarCode   NVARCHAR(25),   --条形码
@WaterNum   NVARCHAR(50),   --种次号
@GroupCode   NVARCHAR(100),--图书的批次号
@ShelfCode   NVARCHAR(100),   --图书的排架号
@Discount   NUMERIC(5,4)--图书的折扣
AS
BEGIN
SET   NOCOUNT   ON
INSERT   INTO   MainBook
(  
Cover,
OldISBN,
NewISBN,
BookName,
Author,
BookPrice,
CD,
BookIntroduction,
BookType,
PublishDateText,   --存原始输入值(出版社的原始日期,一般不规范)
--PublishDateTime,   --出版日期,存入数据库前就转换成日期格式(方便搜索)
PublishName,
ChinaSort,
Abstract,   --   图书内容提要
AuthorIntroduction,--作者简介
Catalog,--图书目录
BookPage   --图书页码
)
VALUES
(
@Cover,--图书的封面
@OldISBN,
@NewISBN,
@BookName,
@Author,
@BookPrice,
@CD,
@BookIntroduction,
@BookType,
@PublishDateText,   --存原始输入值(出版社的原始日期,一般不规范)
--@PublishDateTime,   --出版日期,存入数据库前就转换成日期格式(方便搜索)
@PublishName,
@ChinaSort,
@Abstract,   --   图书内容提要
@AuthorIntroduction,--作者简介
@Catalog,--图书目录
@BookPage   --图书页码
)
INSERT   INTO   ViceBook
(
BookID,
DepartmentID,
FatherID,
BarCode,
WaterNum,   --注:如何使用这个字段,当批量导入数据时,如何增加流水号(种次号)
GroupCode,--图书的批次号
ShelfCode,   --图书的排架号
Discount--图书的折扣
)
VALUES
(
SCOPE_IDENTITY(),
@DepartmentID,
@FatherID,
@BarCode,
@WaterNum,
@GroupCode,--图书的批次号
@ShelfCode,   --图书的排架号
@Discount--图书的折扣
)
END
GO
SET   NOCOUNT   OFF
GO

-----这里是一个参数提供程序
public   SqlParameter   paraInstance(string   parmsName,   SqlDbType   parmsType,   int   size,   object   value,ParameterDirection   parmsDirection)
                {
                        SqlParameter   para   =   new   SqlParameter(parmsName,   parmsType,   size);
                        para.Value   =   value;
                        para.Direction   =   parmsDirection;
                        return   para;
                }


为存储过程提供参数
public   bool   RegisterNewBook(MDepartment   mdepartment)


                {
                        SqlParameter[]   parms   =   new   SqlParameter[23];
                        parms[0]   =   lzj.paraInstance( "@Cover ",   SqlDbType.NVarChar,   1000,   mdepartment.Cover,   ParameterDirection.Input);
                        parms[1]   =   lzj.paraInstance( "@OldISBN ",   SqlDbType.NVarChar,   20,   mdepartment.OldISBN,   ParameterDirection.Input);
                        parms[2]   =   lzj.paraInstance( "@NewISBN ",   SqlDbType.NVarChar,   20,   mdepartment.NewISBN,   ParameterDirection.Input);
                        parms[3]   =   lzj.paraInstance( "@BookName ",   SqlDbType.NVarChar,   100,   mdepartment.BookName,   ParameterDirection.Input);
                        parms[4]   =   lzj.paraInstance( "@Author ",   SqlDbType.NVarChar,   100,   mdepartment.Author,   ParameterDirection.Input);
                        parms[5]   =   lzj.paraInstance( "@BookPrice ",   SqlDbType.Decimal,   8,   mdepartment.BookPrice,   ParameterDirection.Input);
                        parms[6]   =   lzj.paraInstance( "@CD ",   SqlDbType.Bit,   1,   mdepartment.CD,   ParameterDirection.Input);
                        parms[7]   =   lzj.paraInstance( "@BookIntroduction ",   SqlDbType.NVarChar,   -1,   mdepartment.BookIntroduction,   ParameterDirection.Input);
                        parms[8]   =   lzj.paraInstance( "@BookType ",   SqlDbType.TinyInt,   1,   mdepartment.BookType,   ParameterDirection.Input);
                        parms[9]   =   lzj.paraInstance( "@PublishDateText ",   SqlDbType.NVarChar,   50,   mdepartment.PublishDateText,   ParameterDirection.Input);
                        //parms[22]   =   lzj.paraInstance( "@PublishDateTime ",   SqlDbType.DateTime,   8,   mdepartment.PublishDateTime,   ParameterDirection.Input);
                        parms[10]   =   lzj.paraInstance( "@PublishName ",   SqlDbType.NVarChar,   50,   mdepartment.PublishName,   ParameterDirection.Input);
                        parms[11]   =   lzj.paraInstance( "@ChinaSort ",   SqlDbType.NVarChar,   25,   mdepartment.ChinaSort,   ParameterDirection.Input);
                        parms[12]   =   lzj.paraInstance( "@DepartmentID ",   SqlDbType.Int,   4,   mdepartment.DepartmentID,   ParameterDirection.Input);
                        parms[13]   =   lzj.paraInstance( "@FatherID ",   SqlDbType.Int,   4,   mdepartment.FatherID,   ParameterDirection.Input);


                        parms[14]   =   lzj.paraInstance( "@Abstract ",   SqlDbType.NVarChar,   4000,   mdepartment.Abstract,   ParameterDirection.Input);
                        parms[15]   =   lzj.paraInstance( "@AuthorIntroduction ",   SqlDbType.NVarChar,   -1,   mdepartment.AuthorIntroduction,   ParameterDirection.Input);
                        parms[16]   =   lzj.paraInstance( "@Catalog ",   SqlDbType.NVarChar,   -1,   mdepartment.Catalog,   ParameterDirection.Input);
                        parms[17]   =   lzj.paraInstance( "@BookPage ",   SqlDbType.Int,   4,   mdepartment.BookPage,   ParameterDirection.Input);
                        parms[18]   =   lzj.paraInstance( "@BarCode ",   SqlDbType.NVarChar,   25,   mdepartment.BarCode,   ParameterDirection.Input);
                        parms[19]   =   lzj.paraInstance( "@WaterNum ",   SqlDbType.NVarChar,   50,   mdepartment.WaterNum,   ParameterDirection.Input);
                        parms[20]   =   lzj.paraInstance( "@GroupCode ",   SqlDbType.NVarChar,   100,   mdepartment.GroupCode,   ParameterDirection.Input);
                        parms[21]   =   lzj.paraInstance( "@ShelfCode ",   SqlDbType.NVarChar,   100,   mdepartment.ShelfCode,   ParameterDirection.Input);
                        parms[22]   =   lzj.paraInstance( "@Discount ",   SqlDbType.Decimal,   5,   mdepartment.Discount,   ParameterDirection.Input);
                        bool   flag   =   lzj.ExecuteNonQuery( "RegisterNewBook ",   CommandType.StoredProcedure,   parms);
                        return   flag;
                }

问题:始终提示没有提供   “@BookName”参数,
我明明已经提供了啊,为什么提示没有提供了?

[解决办法]
在查询分析器中——》左边的对象浏览器——》选择要调试的存储过程——》右击鼠标——》选择调试——》输入参数——》设置完参数值后点击执行,就会出现一个浮动工具条,上面有单步执行,断点设置等。
若按上面步骤不行,则继续设置:
控制面板——》管理工具——》服务——》MSSQLSERVER——》“登录”选项卡,把登录身份选“此帐户”,然后用户名和密码添你登录Windows用的用户名和密码(你必须是有管理员权限的),然后重启SQL SERVER服务。在查询分析器里调试的时候用sa登录或Windows帐户登录都可以
-----------
VS 2005中调试存储过程方法
[解决办法]
单步调试,肯定哪个地方有问题
[解决办法]
单步调试,可能是哪个参数为null。

热点排行