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

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

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

  1. --function to find student id by name (works)
  2. create function findStudent (@name nvarchar(15), @familyName nvarchar(15))
  3. returns tinyint
  4. as
  5. begin
  6. declare @id tinyint
  7. select @id = (select teaID from Tea where teaFirstName = @name and teaLastName = @familyName)
  8. return @id
  9. end;
  10. --using the function (doesn't work)
  11. declare @id tinyint
  12. select @id = (execute findStudent 'Arash', 'Mitooie')
  13. print @id
fdbelqdn

fdbelqdn1#

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

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

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

相关问题