请教一下SQL Server中自定义函数的变量

createfunctiondbo.f_SumString(@求和条件nvarchar(10))returnsvarchar(1000)asbegindeclare@Su... create function dbo.f_SumString(@求和条件 nvarchar(10)) returns varchar(1000)
as
begin
declare @SumString varchar(1000)
select @SumString = isnull(@SumString + ',' , '') + cast(用料编号 as nvarchar) from [dbo].[tb] where 编号 = @求和条件
return @SumString
end
go

--上面的“用料编号”可以设置成为变量吗?
表中三列:编号,用料编号,交货。
我需要同时对用料编号和交货都进行文本求和,可不想自定义两个函数,该怎么弄?
谢谢。
展开
 我来答
baiynijecym
2012-12-10 · TA获得超过1841个赞
知道大有可为答主
回答量:1411
采纳率:66%
帮助的人:1149万
展开全部
可以设成变量,不过要用到动态SQL,
先拼接sql 字符串,然后再用exec或sp_executesql来执行。
追问
能否给个具体代码?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2016-02-05
展开全部
SQL Server 中,函数只能使用简单的sql语句,逻辑控制语句,复杂一点的存储过程是不能调用的,在函数里也不能使用execute sp_executesql 或者execute 。

要不, 你就创建个 有 2个 OUTPUT 参数的存储过程 ?
追问
只想用函数来实理,可以吗?
追答
create function dbo.f_SumString(@求和条件 nvarchar(10),   @is用料编号  INT  ) 

@SumString = isnull(@SumString + ',' , '') + cast( CASE WHEN @is用料编号 = 1 THEN 用料编号 ELSE 交货 END as nvarchar)

如果你只有 2列的话

可以用一个 @is用料编号 参数来做判断。
也就是 如果 @is用料编号 = 1, 那么 用料编号 否则 交货
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式