2013-06-05 9 views
5

난 그냥 SELECT 문을 반환하는 함수를 만들려고하고 사용할 수 없습니다,하지만 오류 준다 : 이것은 내 코드TSQL 오류 : 반환 값이있는 RETURN 문이 컨텍스트

A RETURN statement with a return value cannot be used in this context.

입니다 :

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

RETURN, 그것을 채우는 날

답변

6

잘못된 구문, 그게 다야 :

그래서 당신이 뭔가를해야합니다. 당신은 "인라인 테이블 반환 함수"

있을 때 CREATE FUNCTION 예 B

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

당신은 반환 된 테이블을 설명하는 데 필요한 솔루션을 알려 주시기 바랍니다 :

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

    INSERT @T 
    <select ...> 

    RETURN 
END 
+0

내 테이블 view_sls입니다 정말 큰를 참조하면 BEGIN를 필요로하지 않기 때문에 나는 모든 열을 정의하지 않으 하나씩, 대안이 있습니까? – HOY

10

두 가지 : 당신이 구조 당신이 테이블에

다음 데이터를 추가 할 필요는

  • 을 반환 할 테이블의을 정의 필요

    • RETURN;으로 전화하여 해당 테이블의 데이터를 호출자에게 리턴 할 수 있습니다.

      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

    내 테이블 view_sls는 실제로 크기가 커서 모든 열을 하나씩 정의하고 싶지는 않습니다. 대안이 있습니까? – HOY

    +0

    OP는 인라인 TVF가 필요하며 다중 명령문이 필요하지 않다고 가정합니다. – gbn

    관련 문제