У меня есть хранимая процедура, которая выполняет некоторый повторяющийся код, поэтому я решил превратить избыточный код в табличную функцию. Проблема, с которой я сталкиваюсь:
Msg 137, Level 16, State 1, Procedure Search, Line 98
Must declare the scalar variable "@myTVP".
Простой пример используемого кода SQL:
CREATE TYPE [dbo].textTable_type AS TABLE(
[text] [nvarchar] (36)
)
CREATE FUNCTION dbo.Search_fn
(@myTVP AS textTable_type READONLY)
RETURNS TABLE
AS
RETURN
( SELECT * from @myTVP )
GO
CREATE PROCEDURE [dbo].[Search]
@myTVP AS textTable_type READONLY
AS
BEGIN
SELECT * FROM dbo.Search_fn(@myTVP)
END
GO
DECLARE @TVP as textTable_type
INSERT INTO @TVP VALUES ('abc')
INSERT INTO @TVP VALUES ('123')
exec dbo.Search(@myTVP = @TVP)
GO
DROP FUNCTION Search_fn
DROP PROCEDURE Search
Если бы кто-нибудь мог дать какое-то понимание, это было бы замечательно!
(Есть несколько дополнительных ошибок, если вы попытаетесь запустить этот пример, но они возникли из-за включенной ошибки. Проблема в том, что хранимая процедура Поиск не может быть создана.
Спасибо.