3
我有一個執行一些重複代碼的存儲過程,所以我決定將冗餘代碼變成表值函數。我現在遇到的問題是:從一個存儲過程執行一個表值函數並傳遞多個表值類型的參數?
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
如果任何人都可以提供任何見解,那將是美好的!
(有幾個額外的錯誤,如果你嘗試運行這個例子,但它們都來源於包含錯誤,問題是由於存儲過程的搜索不能創建。
謝謝。
我假設因爲我的兼容性級別是80,它不會工作。 – Brett 2010-09-27 15:58:32