问题
here's my sample code
drop function rowcount_test
go
CREATE FUNCTION dbo.rowcount_test () RETURNS INT AS
BEGIN
DECLARE @v INT
SELECT @v = 1
return @@ROWCOUNT
END
GO
grant exec on dbo.rowcount_test to public
go
SELECT dbo.rowcount_test()
It gives 1 when executed by mssql 2017 (and earlier)
It gives 0 when executed by mssql 2019
It gives 1 when executed by mssql 2019 (Standard edition) with a db put to the 2017 compatibility mode
It's never been a problem before... Is it a kind of setting affecting the code or a kind of bug in MSSQL 2019?
回答1:
Scalar udf inlining yet again, rather buggy
SELECT dbo.rowcount_test()
OPTION (USE HINT('DISABLE_TSQL_SCALAR_UDF_INLINING'));
来源:https://stackoverflow.com/questions/58952917/unexpected-rowcount-behavior-inside-an-udf-in-ms-sql-2019