suniti dinesh Ответов: 1

МСГ 102, уровень 15, состояние 1, процедура auditview, строка 1 неправильный синтаксис около 'а'


Когда я пытаюсь запустить нижеприведенную процедуру из своего приложения, я получаю ошибку хранимой процедуры как
Msg 102, Level 15, State 1, Procedure AuditView, Line 1 Incorrect syntax near 'AS'

Не могли бы вы пожалуйста помочь мне.
USE [AdminDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[usp_Purge_PurgeBsnDate]
	@BsnDate 			smalldatetime,
	@IncludeAudit		bit
AS
BEGIN
	DECLARE @ErrorReturn INT
	DECLARE @IncludePriorDates BIT
	SET NOCOUNT ON
	SET @ErrorReturn = 0
	SELECT @PriorDates = PriorDates  FROM tbl_Date WHERE BsnDate = @BsnDate
	SET @ErrorReturn = @@ERROR
	IF @ErrorReturn <> 0 GOTO usp_PurgeBsnDate_Error
	IF @PriorDates = 0
	BEGIN
		/* IncludeAudit = 1 means the business date being purged is not the current
		   system date. We don't want to purge the audit of current system date info
		   when purging a business date of that is the same date */
		IF @IncludeAudit = 1
		BEGIN
			Exec @ErrorReturn = usp_Purge_PurgeAudit @BsnDate, @IncludePriorDates, 0
			IF @ErrorReturn <> 0 GOTO usp_PurgeBsnDate_Error
		END
		DELETE FROM tbl_Version WHERE BsnDate = @BsnDate
		SET @ErrorReturn = @@ERROR
		IF @ErrorReturn <> 0 GOTO usp_PurgeBsnDate_Error
		DELETE FROM tbl_ErrBatch WHERE BsnDate = @BsnDate
		SET @ErrorReturn = @@ERROR
		IF @ErrorReturn <> 0 GOTO usp_PurgeBsnDate_Error
		DELETE FROM tbl_Transport WHERE BsnDate = @BsnDate
		SET @ErrorReturn = @@ERROR
		IF @ErrorReturn <> 0 GOTO usp_PurgeBsnDate_Error
		DELETE FROM tbl_ReelInfo WHERE BsnDate = @BsnDate
		SET @ErrorReturn = @@ERROR
		IF @ErrorReturn <> 0 GOTO usp_PurgeBsnDate_Error
		DELETE FROM tbl_TrkFieldStats WHERE SystemDate = @BsnDate
		SET @ErrorReturn = @@ERROR
		IF @ErrorReturn <> 0 GOTO usp_PurgeBsnDate_Error
		DELETE FROM tbl_TrkStats WHERE SystemDate = @BsnDate
		SET @ErrorReturn = @@ERROR
		IF @ErrorReturn <> 0 GOTO usp_PurgeBsnDate_Error
		DELETE FROM tbl_UsedBatchNumber WHERE BsnDate = @BsnDate
		SET @ErrorReturn = @@ERROR
		IF @ErrorReturn <> 0 GOTO usp_PurgeBsnDate_Error
	END
	ELSE
	BEGIN
	             Exec @ErrorReturn = usp_Purge_PurgeAudit @BsnDate, @IncludePriorDates, @IncludeAudit
		IF @ErrorReturn <> 0 GOTO usp_PurgeBsnDate_Error
		DELETE FROM tbl_EIVersion WHERE BsnDate <= @BsnDate
		SET @ErrorReturn = @@ERROR
		IF @ErrorReturn <> 0 GOTO usp_PurgeBsnDate_Error
		DELETE FROM tbl_ErrBatch WHERE BsnDate <= @BsnDate
		SET @ErrorReturn = @@ERROR
		IF @ErrorReturn <> 0 GOTO usp_PurgeBsnDate_Error
		DELETE FROM tbl_Transport WHERE BsnDate <= @BsnDate
		SET @ErrorReturn = @@ERROR
		IF @ErrorReturn <> 0 GOTO usp_PurgeBsnDate_Error
		DELETE FROM tbl_ReelInfo WHERE BsnDate <= @BsnDate
		SET @ErrorReturn = @@ERROR
		IF @ErrorReturn <> 0 GOTO usp_PurgeBsnDate_Error
		DELETE FROM tbl_TrkFieldStats WHERE SystemDate <= @BsnDate
		SET @ErrorReturn = @@ERROR
		IF @ErrorReturn <> 0 GOTO usp_PurgeBsnDate_Error
		DELETE FROM tbl_TrkStats WHERE SystemDate <= @BsnDate
		SET @ErrorReturn = @@ERROR
		IF @ErrorReturn <> 0 GOTO usp_PurgeBsnDate_Error
		DELETE FROM tbl_UsedBatchNumber WHERE BsnDate <= @BsnDate
		SET @ErrorReturn = @@ERROR
		IF @ErrorReturn <> 0 GOTO usp_PurgeBsnDate_Error
	END
	
		RETURN(0)
usp_Purge_PurgeBsnDate_Error:
	RETURN(@ErrorReturn)
END
выход msg
Msg 102, Level 15, State 1, Procedure AuditView, Line 1
Incorrect syntax near 'AS'.

(1 row(s) affected)


Что я уже пробовал:

После выполнения хранимой процедуры вручную из базы данных я получаю нижеприведенный вывод.
USE [AdminDB]
GO

DECLARE	@return_value int

EXEC	@return_value = [dbo].[usp_PurgeBsnDate]
		@BsnDate = '2018-03-16 00:00:00',
		@IncludeAudit = 1

SELECT	'Return Value' = @return_value

GO



Msg 102, Уровень 15, Состояние 1, Процедура AuditView, Строка 1
Неправильный синтаксис рядом с "AS".

(1 ряд(ов) )

CHill60

Пожалуйста, уточните, когда вы получаете ошибку - это когда вы вносите изменения в хранимую процедуру или когда вы пытаетесь ее запустить?
Вы пробовали отказаться от этой процедуры и воссоздать ее, а не вносить в нее поправки?
Вы заявляете, что получаете некоторые выходные данные после выполнения хранимой процедуры вручную, но вы перечислили только код, который используете для вызова процедуры.

suniti dinesh

Привет, остынь, Спасибо за твой ответ. когда я пытаюсь выполнить эту процедуру, я получаю ошибку. Я попытался отбросить процедуру и воссоздать ее, но получаю то же сообщение об ошибке, что и ниже.

Используйте [Admindb]
ГО

Объявить @return_value int

EXEC @return_value = [dbo].[usp_PurgeBsnDate]
@BsnDate = '2018-03-16 00:00:00',
@IncludeAudit = 1

Выберите 'Return Value' = @return_value

ГО

выходное сообщение:
Msg 102, Уровень 15, Состояние 1, Процедура AuditView, Строка 1
Неправильный синтаксис рядом с "AS".

(1 ряд(ов) )

suniti dinesh

Привет, остынь, Спасибо за твой ответ. когда я пытаюсь выполнить эту процедуру, я получаю ошибку. Я попытался отбросить процедуру и воссоздать ее, но получаю то же сообщение об ошибке, что и ниже.

Используйте [Admindb]
ГО

Объявить @return_value int

EXEC @return_value = [dbo].[usp_PurgeBsnDate]
@BsnDate = '2018-03-16 00:00:00',
@IncludeAudit = 1

Выберите 'Return Value' = @return_value

ГО

выходное сообщение:
Msg 102, Уровень 15, Состояние 1, Процедура AuditView, Строка 1
Неправильный синтаксис рядом с "AS".

(1 ряд(ов) )

CHill60

Вы же понимаете, что до сих пор не сказали, когда произойдет ошибка ... "когда я попытаюсь выполнить эту процедуру" ... что делать с процедурой? И вы снова цитируете код, который вы используете для выполнения процедуры.
По крайней мере, теперь мы видим, что ошибка не в процедуре, для которой вы дали код, а в процедуре "AuditView"

1 Ответов

Рейтинг:
12

Wendelius

Судя по сообщению об ошибке проблема находится в процедуре AuditView Поскольку вы вызываете другие процедуры из этой процедуры, есть вероятность, что где-то в цепочке вызовов вызывается или создается AuditView, но синтаксис нарушен.

На основе выходных данных usp_Purge_PurgeAudit вероятно, это было то самое место, откуда я начал поиски.


Wendelius

Глядя на код, кажется, что он пытается создать представление со следующим утверждением

CREATE VIEW AuditView 
AS 
UNION ALL
SELECT * FROM TableName

Почему союз все - таки присутствует?

Чтобы исследовать это более эффективно, добавьте команду
PRINT @ViewSQL


просто будьте осторожны, когда вы пытаетесь создать представление. Таким образом, вы видите, что происходит.

suniti dinesh

Привет Венделиус,
Спасибо за информацию. Я нашел то место, где получаю ошибку.
Существует синтаксическая ошибка в процедуре usp_Purge_PurgeAudit. Я починил его и прекрасно работаю.