【发布时间】:2021-08-29 20:11:40
【问题描述】:
为什么当count 和sum 都是0 时这个过程返回NULL?
create procedure avgSalaryByPositions
as
begin
begin try
declare @sum int
select @sum=sum(base_salary) from position
declare @count int
select @count=count(*) from position
select @sum/@count
end try
begin catch
select
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;
end catch
end
并且不会产生这样的输出?
create procedure blablabla
as
begin
BEGIN TRY
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
end
GO
exec blablabla
如果表中没有任何内容,即sum 和count 都为0,如何将第一个过程更改为与第二个过程相同?
谢谢。
【问题讨论】:
-
请注意,您可以像这样
select @sum = sum(base_salary), @count = count(*) from position或只是select sum(base_salary) / count(*) from position组合selects。另请注意,您将获得整数除法 -
@Charlieface 谢谢。
-
如果你不打算对它们做任何事情,不要吃错误。并且不要将错误转换为结果集。要么不接,要么重新扔。
标签: sql sql-server stored-procedures try-catch