Я строю свою первую скалярную функцию (MS SQL Server) и получаю такую ошибку:
"Операторы выбора, включенные в функцию, не могут возвращать данные клиенту."
IЯ понимаю, что я не могу использовать операторы выбора, но как мне тогда получить информацию?
Функция показывает, изучал ли студент и прошел ли он элементарные предметы, и работает следующим образом:
идентификатор параметра - это общий идентификатор, который дает мне студента из таблицы «Студенты».Затем из таблицы «Предметы» я получаю вид предмета.Функция 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