2011-12-16 4 views
4

내가 처음 스칼라 함수 (MS SQL 서버)를 짓고 있어요을 사용하고 난이 오류가 묻지 않도록하는 방법 : 클라이언트에 데이터를 반환 할 수없는 기능에 포함SQL 스칼라 함수를 선택 문

"Select 문을. "

나는 select 문을 사용할 수 없다는 것을 알고 있지만 어떻게 정보를 얻을 수 있습니까?

기능은 학생이 공부하고 초등학교 과목을 통과하면 보여주고, 이런 식으로 작동합니다

매개 변수 ID가 나에게 테이블 학생들의 studentid을 제공하는 일반 ID가입니다. 그러면 표의 주제에서 나는 주제의 종류를 얻습니다. kindOfSubject 매개 변수의 getKindOfSubjectStudied 함수는 학생이 전달한 주제가 초등 클래스인지 여부를 보여줍니다. 그러면 결과는 1이되고, 그렇지 않으면 0이됩니다.

별도로 테스트 한 모든 쿼리가 오류없이 작동합니다.

다음은 설명 된 기능 코드입니다.

감사

set ANSI_NULLS ON 
set QUOTED_IDENTIFIER ON 
USE MYDBASE 
GO 

CREATE FUNCTION [dbo].[getStudentHasElementary] 
( 
    -- paramenter 
    @id int 
) 
RETURNS INTEGER 
AS 
BEGIN 
    DECLARE @Result AS INTEGER 
    DECLARE @return_value varchar (50) 

SELECT studentsid 
FROM dbo.Students 
WHERE (id = id) 

SELECT kindOfSubject 
FROM dbo.Subjects 
WHERE (studentsid = studentsid) 


--- I use this function to know if the subject is elementary 
EXEC @return_value = [dbo].[getKindOfSubjectStudied] 
     @id = id, 
     @kindOfSubject = kindOfSubject; 

SELECT 'Return Value' = @return_value 



IF (@return_value = 'elementary') 
     BEGIN 
      SET @Result = 1 
     END 
     ELSE 
     BEGIN 
      SET @Result = 0 
     END 

    RETURN @Result 
END 
+0

나는 MS SQL Server를 사용합니까? – MatBailie

+0

이 숙제가 있습니까? – Aaron

+0

예 MS SQL Server이고 내 숙제입니다.) – user974417

답변

5

그냥이 라인 변경 많은 : 또한 하나 같이 int을로 그 변수의 정의를 수정해야합니까

SELECT 'Return Value' = @return_value 

RETURN @return_value; 

로를 그래서 :

DECLARE @return_value int; 

또는 같은 varchar(50)로 함수의 반환 값 변경 : 당신은 두 개의 질의를 정리해야합니까

CREATE FUNCTION [dbo].[getStudentHasElementary] 
( 
    -- paramenter 
    @id int 
) 
RETURNS varchar(50) 

합니다. @kindofsubject 변수를 선언하고 다음과 같이 쿼리를 작성하십시오.

DECLARE @kindofsubject varchar(50); -- I'm guessing here...? 
-- make sure your constraints ensure only one row will be returned 
-- otherwise use TOP 1 (not a great idea, really) 
SELECT @kindofsubject = kindOfSubject 
FROM dbo.Subjects 
WHERE (studentsid = studentsid); 
+0

마다 선택 오류가 발생했습니다. – user974417

+0

OK - 그만보고 싶습니다. 모든 SELECT 문은 결과를 변수에 저장해야합니다. 내 편집을 참조하십시오. – Yuck

+0

큰 일을 해 주셔서 감사합니다. 이제는 함수를 작성하는 방법을 이해합니다. – user974417