Скалярная функция SQL, как не использовать оператор выбора

Я создаю свою первую скалярную функцию (MS SQL Server) и получаю следующую ошибку:

«Операторы выбора, включенные в функцию, не могут возвращать данные клиенту».

Я понимаю, что не могу использовать операторы выбора, но как мне тогда получить информацию?

Функция показывает, изучил ли студент и сдал ли он элементарные предметы, и работает следующим образом:

id параметра - это общий идентификатор, который дает мне studentid из таблицы Student. Затем из таблицы «Предметы» я получаю вид предмета. Функция getKindOfSubjectStudied с заданным параметром kindOfSubject покажет, является ли предмет, переданный учащимся, элементарным. В таком случае результат будет 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
5
задан Yuck 16 December 2011 в 14:15
поделиться