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

查询是否有这样一条记录,并且保存到一个变量!用,该如何解决

2012-01-08 
查询是否有这样一条记录,并且保存到一个变量!!急用CREATEPROCEDURECARRULE@cCARIDCHAR(4),@cSTAUSCHAR(4),

查询是否有这样一条记录,并且保存到一个变量!!急用
CREATE   PROCEDURE   CARRULE

@cCARID   CHAR(4),
@cSTAUS   CHAR(4),
@cRULE   CHAR(4),
@rCnt   CHAR(10)
AS

BEGIN

SELECT   count(1)   INTO   rCnt   FROM   CAR_RULE   WHERE   CARID   =   @cCARID  
IF(rCnt   >   0)   THEN//这里好像有问题
        UPDATE   CAR_RULE  
        SET   STATUS   =   @cSTAUS,   RULEINFO   =   @cRULE  
        WHERE   CARID   =   @cCARID
ELSE
INSERT   INTO   CAR_RULE   (CARID,   STATUS,   RULEINFO)
VALUES(@cCARID,   @cSTAUS,   @cRULE)
END   IF
 
END
功能是这样的:如果数据库有这台车就更新数据,如果没有就插入一条新记录

[解决办法]
把这个SELECT count(1) INTO rCnt FROM CAR_RULE WHERE CARID = @cCARID

改成这个:
SELECT rCnt =count(1) INTO rCnt FROM CAR_RULE WHERE CARID = @cCARID

试一下
[解决办法]
if exists(select 1 FROM CAR_RULE WHERE CARID = @cCARID )
update
else
inert

判断语句格式:
if ...
else
...
[解决办法]
CREATE PROCEDURE CARRULE

@cCARID CHAR(4),
@cSTAUS CHAR(4),
@cRULE CHAR(4),
@rCnt CHAR(10)
AS

BEGIN
Declare @Count Int
SELECT @Count = count(1) FROM CAR_RULE WHERE CARID = @cCARID
IF(@Count > 0)
UPDATE CAR_RULE
SET STATUS = @cSTAUS, RULEINFO = @cRULE
WHERE CARID = @cCARID
ELSE
INSERT INTO CAR_RULE (CARID, STATUS, RULEINFO)
VALUES(@cCARID, @cSTAUS, @cRULE)

END
[解决办法]
CREATE PROCEDURE CARRULE

@cCARID CHAR(4),
@cSTAUS CHAR(4),
@cRULE CHAR(4),
@rCnt CHAR(10)
AS
declare @i int
BEGIN

SELECT @i=count(1) INTO #rCnt FROM CAR_RULE WHERE CARID = @cCARID
IF(@i > 0)
Begin
UPDATE CAR_RULE
SET STATUS = @cSTAUS, RULEINFO = @cRULE
WHERE CARID = @cCARID
end
ELSE
begin
INSERT INTO CAR_RULE (CARID, STATUS, RULEINFO)
VALUES(@cCARID, @cSTAUS, @cRULE)
end

END

[解决办法]
IF後面沒有THEN,也沒有END IF,你那不是SQL的語法。

賦值給變量,這麼寫

Declare @Count Int

SELECT @Count = count(1) FROM CAR_RULE WHERE CARID = @cCARID
[解决办法]
CREATE PROCEDURE CARRULE

@cCARID CHAR(4),
@cSTAUS CHAR(4),
@cRULE CHAR(4),
@rCnt CHAR(10)
AS

BEGIN
if exists (
SELECT 1 FROM CAR_RULE WHERE CARID = @cCARID
)
UPDATE CAR_RULE
SET STATUS = @cSTAUS, RULEINFO = @cRULE
WHERE CARID = @cCARID
ELSE
INSERT INTO CAR_RULE (CARID, STATUS, RULEINFO)
VALUES(@cCARID, @cSTAUS, @cRULE)
END IF

END

[解决办法]
應該改成這樣
CREATE PROCEDURE CARRULE

@cCARID CHAR(4),
@cSTAUS CHAR(4),
@cRULE CHAR(4),
@rCnt CHAR(10)
AS

BEGIN

SELECT @rCnt = count(1) FROM CAR_RULE WHERE CARID = @cCARID


IF(@rCnt > 0)
UPDATE CAR_RULE
SET STATUS = @cSTAUS, RULEINFO = @cRULE
WHERE CARID = @cCARID
ELSE
INSERT INTO CAR_RULE (CARID, STATUS, RULEINFO)
VALUES(@cCARID, @cSTAUS, @cRULE)


END
[解决办法]
呵,我没有改过来就发了!
把这个SELECT count(1) INTO rCnt FROM CAR_RULE WHERE CARID = @cCARID

改成这个:
SELECT rCnt =count(1) FROM CAR_RULE WHERE CARID = @cCARID

试一下
[解决办法]
select …… into 是将结果放在一个新表中去。不是变量赋值

热点排行