我正按照一本书做一个 图书馆管理系统进行到创建存储过程的时候  有一传查询进行不下去了=======================================================================
CREATE PROCEDURE [BookModify]
(@BID   [int],
 @BISBN  [varchar](50),
 @BName  [varchar](50),
 @BAuthor  [varchar](50),
 @BTheme  [varchar](50),
 @BClassifyText [varchar](50),
 @BIndex  [varchar](50),
 @BPress  [varchar](50),
 @BPrice  [money],  // 问题应在这一行 BPrice数据库里的类型是[varchar](50) 
 @BSeriesName [varchar](50),
 @BDescribe  [varchar](500))
AS UPDATE [LMS].[dbo].[Book] 
SET   [BISBN]  = @BISBN,
 [BName]  = @BName,
 [BAuthor]  = @BAuthor,
 [BTheme]  = @BTheme,
 [BClassifyText]  = @BClassifyText,
 [BIndex]  = @BIndex,
 [BPress]  = @BPress,
 [BPrice]  = @BPrice,
 [BSeriesName]  = @BSeriesName,
 [BDescribe]  = @BDescribe 
WHERE 
( [BID]  = @BID)
错误提示:服务器: 消息 260,级别 16,状态 1,过程 BookModify,行 13
不允许从数据类型 money 到数据类型 varchar 的隐性转换(表 'LMS.dbo.Book',列 'bprice')。请使用 CONVERT 函数来运行此查询。
=================================================================代码是书上的请问我该怎么改?在线等 真心求教谢谢了。

解决方案 »

  1.   

    convert(varchar,@BPrice)
    把它转化为varchar类型不就得了。
      

  2.   

    把[BPrice]= @BPrice改为
    [BPrice]  = convert(varchar,@BPrice)就可以了。
      

  3.   

    呵呵  现在是刚刚学习中  只好照着书上写的做。再冒昧问一下 从哪里 写 convert(varchar,@BPrice)
      

  4.   

    我上面的帖子不是说了:
    把[BPrice]= @BPrice这行改为
    [BPrice] = convert(varchar,@BPrice)就可以了。
      

  5.   

    CREATE PROCEDURE [BookAdd]
    (@BID   [int],
     @BISBN  [varchar](50),
     @BName  [varchar](50),
     @BAuthor  [varchar](50),
     @BTheme  [varchar](50),
     @BClassifyText  [varchar](50),
     @BIndex  [varchar](50),
     @BPress  [varchar](50),
     @BPrice  [money],
     @BSeriesName  [varchar](50),
     @BDescribe  [varchar](500))AS INSERT INTO [LMS].[dbo].[Book] 
     ( [BID],
     [BISBN],
     [BName],
     [BAuthor],
     [BTheme],
     [BClassifyText],
     [BIndex],
     [BPress],
     [BPrice],
     [BSeriesName],
     [BDescribe]) 
     
    VALUES 
    ( @BID,
     @BISBN,
     @BName,
     @BAuthor,
     @BTheme,
     @BClassifyText,
     @BIndex,
     @BPress,
     @BPrice,
     @BSeriesName,
     @BDescribe)还是那个问题那这段程序怎么改?没有[BPrice]= @BPrice)啊
      

  6.   

    那你先看看convert这个函数的用法。我们刚才所用的是,把这个变量的类型该位varchar类型,只是类型改变了,还是这个变量吧。
    现在插入就不用前面的[BPrice]= 就可以了。
    你用的是sql server 数据库吧?
      

  7.   

    是SQL 可以在MSDN 上看吗?convert(varchar,@BPrice) 加到哪里?
      

  8.   

    呵呵  现在正在google上查呢您能否直接告诉我  加到
    CREATE PROCEDURE [BookAdd]
    (@BID [int],
    @BISBN [varchar](50),
    @BName [varchar](50),
    @BAuthor [varchar](50),
    @BTheme [varchar](50),
    @BClassifyText [varchar](50),
    @BIndex [varchar](50),
    @BPress [varchar](50),
    @BPrice [money],
    @BSeriesName [varchar](50),
    @BDescribe [varchar](500))AS INSERT INTO [LMS].[dbo].[Book]
    ( [BID],
    [BISBN],
    [BName],
    [BAuthor],
    [BTheme],
    [BClassifyText],
    [BIndex],
    [BPress],
    [BPrice],
    [BSeriesName],
    [BDescribe])VALUES
    ( @BID,
    @BISBN,
    @BName,
    @BAuthor,
    @BTheme,
    @BClassifyText,
    @BIndex,
    @BPress,
    @BPrice,
    @BSeriesName,
    @BDescribe)中的哪里?
      

  9.   

    VALUES
    ( @BID,
    @BISBN,
    @BName,
    @BAuthor,
    @BTheme,
    @BClassifyText,
    @BIndex,
    @BPress,
    cast(@BPrice as varchar(50)),---加这里
    @BSeriesName,
    @BDescribe)