【发布时间】:2020-09-09 19:50:13
【问题描述】:
我正在尝试创建以下函数:
Create function mastercount
(
@table nvarchar(50)
, @policy nvarchar(20)
, @firstname nvarchar(20)
, @lastname nvarchar (20)
)
Returns nvarchar (50)
As
Begin
Declare @count int =''
If @table ='A'
Select count (*)
from A
where policy = @policy and firstname = @firstname and lastname = @lastname
Else If @table ='B'
Select count (*)
from A
where policy = @policy and firstname = @firstname and lastname = @lastname
Else If @table ='A'
Select count (*)
from A
where policy = @policy and firstname = @firstname and lastname = @lastname
Return @count;
End
但我收到一个错误:
函数中包含的选择语句无法将数据返回给客户端
【问题讨论】:
-
是的,你不能在函数中这样做。正如错误消息明确指出的那样。你的问题是什么?可能您想分配给
@count而不是直接分配给select -
您的路径可能源于架构问题,并且可能会将您带入死胡同。由于您的函数似乎正在生成行数,因此返回类型应该是 int 或 bigint,而不是 nvarchar。
-
我的问题是如何返回计数而不出现此错误,谁能详细说明一下?
-
Martin 已经告诉过你,例如select into variable
-
更好的是,不要使用 SELECT 来分配标量值。使用 SET。示例:
set @count = (select count(*) from ....);注意语句终止符 - 开始养成良好的习惯。
标签: sql sql-server function