首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

为什么这个方法小弟我写成存储过程如何不行啊

2012-01-24 
为什么这个方法我写成存储过程怎么不行啊!EXECpr_EedCarRule10, C--这样调用存储过程不能更新数据CREATEPR

为什么这个方法我写成存储过程怎么不行啊!
EXEC   pr_EedCarRule   10, 'C '   --这样调用存储过程不能更新数据

CREATE   PROCEDURE   pr_EedCarRule
@cCarId   CHAR(10),
@cRule   CHAR(10)
AS
BEGIN
    DECLARE   @Count   INT
    SELECT   @Count   =     count(1)   FROM   CAR_RULE   WHERE   CARID   =   @cCarId
    IF   (@Count> 0)
        BEGIN
          IF   EXISTS   (SELECT   1   FROM   CAR_RULE   WHERE   CHARINDEX(@cRule,RULEINFO)> 0)
              UPDATE   CAR_RULE   SET   RULEINFO   =   REPLACE(RULEINFO,@cRule, ' ')
              WHERE   CARID   =   @cCarId
        END
END
--这样就可以更新数据
IF   EXISTS   (SELECT   1   FROM   CAR_RULE   WHERE   CHARINDEX( 'C ',RULEINFO)> 0)  
UPDATE   CAR_RULE   SET   RULEINFO   =   REPLACE(RULEINFO, 'C ', ' ')
WHERE   CARID   =   10

--怎么改上面的存储过程啊!!?

[解决办法]

@cCarId CHAR(10),
@cRule CHAR(10)
改成

@cCarId VARCHAR(10),
@cRule VARCHAR(10)

[解决办法]
CREATE PROCEDURE pr_EedCarRule
@cCarId CHAR(10),
@cRule CHAR(10)

改成

CREATE PROCEDURE pr_EedCarRule
@cCarId int,
@cRule varCHAR(10)
[解决办法]
CHARINDEX(@cRule,RULEINFO)> 0

@cRule CHAR(10) 这个 @cRule 结果是 'C ' 换成Haiwer(海阔天空) 的就可以了
[解决办法]
哦,我知道了,CHAR是固定长度的,你定义了CHAR的长度为10,查找的时候就是根据10个长度的字符来查找的,所以和‘C '有区别,而VARCHAR是可变长度的。

热点排行
Bad Request.