sql—使用返回int的函数时出现问题

anauzrmj  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(357)

下面是一个非常简单的函数,用于按名称返回学生id。该函数正常工作,但我在使用它时遇到问题:

--function to find student id by name (works)
create function findStudent (@name nvarchar(15), @familyName nvarchar(15))
returns tinyint
as
begin
    declare @id tinyint
    select @id = (select teaID from Tea where teaFirstName = @name and teaLastName = @familyName)
    return @id
end;

--using the function (doesn't work)
declare @id tinyint
select @id = (execute findStudent 'Arash', 'Mitooie')
print @id
fdbelqdn

fdbelqdn1#

你有一个功能。不需要执行。把它插进一个 select :

declare @id tinyint;
select @id = dbo.findStudent('Arash', 'Mitooie');
print @id;

也可以将其定义为存储过程。如果那样的话,我建议通过考试 @id 作为一个 OUTPUT 参数并在过程中赋值。
您还应该检查存储过程和存储函数之间的区别,因为您似乎混淆了这两者。最简单的情况是,存储函数返回单个值或结果集,并用于查询。存储过程不能用于查询(除了 insert 在某些特殊情况下,我不建议使用)。

相关问题