0
다음 SQL Server 저장 프로 시저가 있습니다. 문제는 다음과 같습니다. log_db_error
테이블에 레코드가 있으면 제대로 작동하지만 테이블이 비어 있으면 @@ERROR
이 오류를 나타냅니다. 어떤 방식 으로든이를 해결할 수 있습니까? 미리 감사드립니다.SQL Server : 빈 테이블에서 선택시 @@ 오류
CREATE PROCEDURE [dbo].[Log_DB_Error_Get_All]
@rownum_min int,
@rownum_max int
AS
BEGIN
SET NOCOUNT ON;
WITH ORDERED_LIST AS
(
SELECT
ROW_NUMBER() OVER(ORDER BY el.created_on) AS ROWNUM,
el.log_db_error_id,
el.[error_function],
el.[error_message],
el.[error_severity],
el.[error_state],
el.created_on,
el.created_by
FROM
log_db_error el
)
SELECT *
FROM ORDERED_LIST
WHERE ROWNUM BETWEEN @rownum_min AND @rownum_max;
IF(@@ERROR <> 0)
BEGIN
GOTO Handle_Error
END
-- execution jumps here when (@@ERROR > 0), i.e. error happens
Handle_Error:
DECLARE @ERROR_MESSAGE NVARCHAR(4000);
DECLARE @ERROR_SEVERITY INT;
DECLARE @ERROR_STATE INT;
DECLARE @ERROR_DATE DATETIME;
DECLARE @ERROR_FUNCTION NVARCHAR(100);
DECLARE @ERROR_CREATED_BY BIGINT;
SELECT
@ERROR_MESSAGE = ERROR_MESSAGE(),
@ERROR_SEVERITY = ERROR_SEVERITY(),
@ERROR_STATE = ERROR_STATE(),
@ERROR_DATE = SYSDATETIME(),
@ERROR_CREATED_BY = null;
SET @ERROR_FUNCTION = OBJECT_SCHEMA_NAME(@@PROCID) + '.' + OBJECT_NAME(@@PROCID);
--store error details to a log table
exec dbo.Log_DB_Error_Insert @ERROR_FUNCTION, @ERROR_MESSAGE, @ERROR_SEVERITY, @ERROR_STATE, @ERROR_DATE, @ERROR_CREATED_BY
END
생성되는 오류는 무엇입니까? –
나는 당신이 전체 script.Also를 표시하지 않는 것 같아요 @ @ 오류 메시지를 테이블에서 제공해야합니다. – KumarHarsh