2011-03-12 6 views
0

Northwind에서 새 테이블을 반환하기 위해 ProductID, ProductName, UnitsInStock 및 함수 매개 변수보다 UnitsInStock이 더 많은지 나타내는 새 열을 반환하기 위해 T-SQL 함수를 만들려고합니다.TSQL : 함수를 만드는 데 문제가 있습니다.

: 2 개의 제품 표를 보겠습니다. 우선 주식에 10 개 단위가, 두 번째 5. 그래서 매개 변수 6 함수가 반환해야 있습니다

1, 제품 1, 10, YES

2, 제품 2, 5, NO

가 여기 내 비 작동 코드를 SOFAR :(

CREATE FUNCTION dbo.ProductsReorder 
    (
    @minValue int 
    ) 
RETURNS @tabvar TABLE (int _ProductID, nvarchar _ProductName, int _UnitsInStock, nvarchar _Reorder) 
AS 
    BEGIN 
     INSERT INTO @tabvar 
      SELECT ProductID, ProductName, UnitsInStock, Reorder = 
      CASE 
      WHEN UnitsInStock > @minValue THEN "YES" 
      ELSE "NO" 
      END 
      FROM Products 
     RETURN 
    END 

T-SQL은 저에게이 정말 도움이 답변을 제공합니다 : "열, 매개 변수 또는 변수 # 1 : 데이터 타입이을 _ProductID 찾을 수 없습니다"내가 봤하지만 나는 그런위한 gazillion 다른 문제를 발견했다. 결과.

여기에 CASE를 사용하는 것이 좋으면 몰라, 약간의 Oracle 배경과 디코드 기능이있어이 문제를 해결할 수있었습니다.

답변

2

테이블 정의에서 먼저 열 이름을 입력하고 데이터 형식을 입력해야합니다. 예를 들어,

_UnitsInStock int, ... 

또한, NVARCHAR 데이터 형식에는 길이 값이 필요합니다.

_ProductName nvarchar(20) 
+0

와우 들어오는 SQL 서버에서

@tabvar TABLE ([_ProductID] INT, [_ProductName] NVARCHAR(50), [_UnitsInStrock] INT, [_Reorder] NVARCHAR(50)) 

처럼! 대단히 감사합니다 :) 나는 최대한 빨리 대답을 수락 할 것입니다. – Xorty

3

그것은 쉬운 대답은 - 당신은 오라클

함수의 테이블 정의가 라운드 잘못된 방법에서 특히있다.

은 교체 : 뭔가

@tabvar TABLE (int _ProductID, nvarchar _ProductName, int _UnitsInStock, nvarchar _Reorder) 

유형이 절름발이 실수 열 이름

+0

고마워요,하지만 봅은 좀 빨랐어요 :)) – Xorty

관련 문제