在关键字开头附近的存储过程语法中获取错误。 [英] Getting Error in Stored Procedure Syntax Near the Keyword Begin.

查看:94
本文介绍了在关键字开头附近的存储过程语法中获取错误。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,

我有像古吉拉特邦,马哈拉施特拉邦,uttarPradesh这样的CircleId。所以

我想要执行三个条件:

1 st条件:如果我在数据库中找到相同的记录,则不应保存记录。

2 nd条件:新记录应该添加。

3 rd条件:如果我发现同一个CircleId的记录超过4,则不应该允许保存。

但是我得到的错误如下。

消息156,等级15 ,状态1,程序K2_CHECKENTRYINFILELOG,第50行

关键字'begin'附近的语法不正确。

消息156,级别15,状态1,过程K2_CHECKENTRYINFILELOG,第56行

关键字'else'附近的语法不正确。



存储过程如下:

Hi Everyone ,
I have a CircleId like Gujarat,maharashtra,uttarPradesh ..and So on
I want to perform three condition:
1 st Condition :If i found the same record in database,it should not save the Record.
2 nd Condition: New Record should get Add.
3 rd Condition:if i found more than 4 record for the same CircleId it should not allow to save.
But I am getting a Error as follows .
Msg 156, Level 15, State 1, Procedure K2_CHECKENTRYINFILELOG, Line 50
Incorrect syntax near the keyword 'begin'.
Msg 156, Level 15, State 1, Procedure K2_CHECKENTRYINFILELOG, Line 56
Incorrect syntax near the keyword 'else'.

Stored Procedure is As follows:

ALTER PROCEDURE [dbo].[K2_CHECKENTRYINFILELOG] 
@FILENAME VARCHAR(150),
@FILEPATH VARCHAR(MAX),
@FILETYPE int,
@FILEDATE datetime,
@CIRCLEID INT,
@TOTALROWS int,
@SUCCESSCOUNT int,
@FAILURECOUNT int,
@PROCESSED bit,
@ERROR varchar(MAX),
@VENDORID int,
@CREATEDBY INT = 1,
@CREATEDON DATETIME,
@DELETED BIT=0,
@FILELOGID bigINT

AS	
BEGIN	
	IF NOT EXISTS (
select count(CIRCLEID) from K2FILELOG where FILEPATH = @FILEPATH and
                                              [FILENAME] = @FILENAME and
                                              FILETYPE = @FILETYPE and
                                              FILEDATE = @FILEDATE and
                                              CIRCLEID = @CIRCLEID and
                                              TOTALROWS = @TOTALROWS and
                                              SUCCESSCOUNT = @SUCCESSCOUNT and
                                              FAILURECOUNT = @FAILURECOUNT and
                                              PROCESSED = @PROCESSED and
                                              ERROR = @ERROR and
                                              VENDORID = @VENDORID and
                                              CREATEDBY = @CREATEDBY and
                                              CREATEDON = @CREATEDON and 
                                              DELETED = @DELETED)
begin
INSERT INTO K2FILELOG
	   (FILEPATH, [FILENAME],FILETYPE,FILEDATE,CIRCLEID,TOTALROWS,SUCCESSCOUNT,FAILURECOUNT,PROCESSED,ERROR,VENDORID,CREATEDBY, CREATEDON, DELETED)
values (@FILEPATH ,@FILENAME,@FILETYPE,@FILEDATE,@CIRCLEID,@TOTALROWS,@SUCCESSCOUNT,@FAILURECOUNT,@PROCESSED,@ERROR ,@VENDORID,@CREATEDBY,@CREATEDON,@DELETED);
set @FILELOGID =@@identity
  END

ELSE if
begin
select count (CIRCLEID) from K2FILELOG with (nolock) where FILETYPE = @FILETYPE and	
                                                             FILEDATE = @FILEDATE and	
                                                             CIRCLEID = @CIRCLEID 
                                                             GROUP BY CIRCLEID having count(CIRCLEID) >= 4
END
else
begin
INSERT INTO K2FILELOG
	   (FILEPATH, [FILENAME],FILETYPE,FILEDATE,CIRCLEID,TOTALROWS,SUCCESSCOUNT,FAILURECOUNT,PROCESSED,ERROR,VENDORID,CREATEDBY, CREATEDON, DELETED)
values (@FILEPATH ,@FILENAME,@FILETYPE,@FILEDATE,@CIRCLEID,@TOTALROWS,@SUCCESSCOUNT,@FAILURECOUNT,@PROCESSED,@ERROR ,@VENDORID,@CREATEDBY,@CREATEDON,@DELETED);
set @FILELOGID =@@identity
end

END







请指导我。




Please Guide me .

推荐答案

否则如果有条件的陈述,你把它留空就把条件。
Else If should have the conditional statment you have left it blank put the condition.





第一次更改:



Hi,

First Change :

ALTER PROCEDURE [dbo].[K2_CHECKENTRYINFILELOG] (
@FILENAME VARCHAR(150),
@FILEPATH VARCHAR(MAX),
@FILETYPE int,
@FILEDATE datetime,
@CIRCLEID INT,
@TOTALROWS int,
@SUCCESSCOUNT int,
@FAILURECOUNT int,
@PROCESSED bit,
@ERROR varchar(MAX),
@VENDORID int,
@CREATEDBY INT = 1,
@CREATEDON DATETIME,
@DELETED BIT=0,
@FILELOGID bigINT
 )
AS





第二次更改:



如果你没有在其他地方写过条件,那么请在if之后设置条件。



请进行这些更改,如果之后你会收到错误,那么你可以再问我一次。



2nd Change:

Put a condition after else if, you have not written condition in else if.

Please make these changes, if after that you will get error then you can ask me again.


这篇关于在关键字开头附近的存储过程语法中获取错误。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆