2013-06-05 21 views

Odpowiedz

6

Błędna składnia, to wszystko. Nie trzeba BEGIN gdy masz „inline funkcji wycenione tabela”

Zobacz CREATE FUNCTION i Przykład B

CREATE FUNCTION [dbo].[Sample] (@SampleValue int) 
RETURNS TABLE 
AS 
RETURN 
(
SELECT * FROM View_sls 
); 
GO 
3

musisz opisać wracającą tabelę, wypełnić go, a następnie RETURN:

CREATE FUNCTION [dbo].[Sample] (@SampleValue int) 
RETURNS @RESULTS TABLE 
(
    ID int, <other fields> 
) 
AS BEGIN 

    INSERT @T 
    <select ...> 

    RETURN 
END 
+0

Moje view_sls tabeli jest bardzo duża, więc nie chcę definiować wszystkie kolumny jeden po drugim, czy istnieje alternatywa? – HOY

10

dwie rzeczy:

  • trzeba określają strukturę stołu chcesz powrócić
  • trzeba dodać danych w tej tabeli

Następnie możesz zadzwonić pod numer RETURN;, aby zwrócić dane tej tabeli do osoby dzwoniącej.

Więc trzeba coś takiego:

CREATE FUNCTION [dbo].[Sample] (@SampleValue int) 
RETURNS @returnTable TABLE 
        (ContactID int PRIMARY KEY NOT NULL, 
         FirstName nvarchar(50) NULL, 
         LastName nvarchar(50) NULL, 
         JobTitle nvarchar(50) NULL, 
         ContactType nvarchar(50) NULL) 
AS 
BEGIN 
    INSERT INTO @returnTable 
     SELECT ContactID, FirstName, LastName, JobTitle, ContactType 
     FROM dbo.View_sls 

    RETURN; 
END 
+0

Moja tabela view_sls jest naprawdę duża, więc nie chcę definiować wszystkich kolumn jeden po drugim, czy istnieje alternatywa? – HOY

+0

Zakładam, że OP chce mieć wbudowaną TVF, a nie wersję multi-statementową – gbn

Powiązane problemy