Haha, coba ini:
IF OBJECT_ID('_HappyFunction' ) IS NOT NULL DROP FUNCTION _HappyFunction
IF OBJECT_ID('_SadFunction' ) IS NOT NULL DROP FUNCTION _SadFunction
IF TYPE_ID ('_UniqueIntTable') IS NOT NULL DROP TYPE _UniqueIntTable
GO
CREATE TYPE _UniqueIntTable AS TABLE (Value int NOT NULL PRIMARY KEY)
GO
CREATE FUNCTION _HappyFunction (@IDs _UniqueIntTable READONLY)
RETURNS TABLE AS RETURN
SELECT Value FROM @IDs
GO
CREATE FUNCTION _SadFunction (@IDs _UniqueIntTable READONLY)
RETURNS TABLE AS RETURN
WITH CTE AS (SELECT Value FROM @IDs)
SELECT Value FROM CTE
GO
-- this will return an empty record set
DECLARE @IDs _UniqueIntTable
SELECT * FROM _HappyFunction(@IDs)
GO
-- this will hang
DECLARE @IDs _UniqueIntTable
SELECT * FROM _SadFunction(@IDs)
GO
Siapa yang akan menebak?