27,579
社区成员
发帖
与我相关
我的任务
分享
declare @FaultNums nvarchar(1000)
declare @Kind nvarchar(50)
declare @Discription nvarchar(1000)
declare @FaultNum nvarchar(10)
declare @Discriptions nvarchar(max)
set @FaultNums='41*46*64*66*67*68*69*71*73'
set @Kind='直流电动转辙机'
set @Discriptions=''
if @FaultNums is not null
begin
j1:
set @FaultNum=case when charindex('*',@FaultNums)>0 then substring(@FaultNums,1,charindex('*',@FaultNums)-1)
else @FaultNums
end
set @FaultNums=substring(@FaultNums,charindex('*',@FaultNums)+1,len(@FaultNums)-charindex('*',@FaultNums))
declare @sqls nvarchar(300)
set @sqls='select @a=病历描述 from ' + @Kind+'病历表 where 病历编号='+@FaultNum
print @sqls
exec sp_executesql @sqls,N'@a nvarchar(1000) output',@Discription output
set @Discriptions=@Discriptions+'$'+isnull(@Discription,'')
if (@FaultNum<>@FaultNums) goto j1
end
print @Discriptions
set @sqls='select @a=病历描述 from ' + @Kind+'病历表 where 病历编号='+@FaultNum
print @sqls
exec sp_executesql @sqls,N'@a nvarchar(1000) output',@Discription output
消息 557,级别 16,状态 2,第 1 行
只有函数和扩展存储过程才能从函数内部执行。
create function [dbo].[GetFaultDiscription](@FaultNums nvarchar(1000),@Kind nvarchar(50))
returns nvarchar(max)
as
begin
declare @Discription nvarchar(1000)
declare @FaultNum nvarchar(10)
declare @Discriptions nvarchar(max)
set @Discriptions=''
if @FaultNums is not null
begin
j1:
set @FaultNum=case when charindex('*',@FaultNums)>0 then substring(@FaultNums,1,charindex('*',@FaultNums)-1)
else @FaultNums
end
set @FaultNums=substring(@FaultNums,charindex('*',@FaultNums)+1,len(@FaultNums)-charindex('*',@FaultNums))
declare @sqls nvarchar(300)
set @sqls='select @a=病历描述 from ' + @Kind+'病历表 where 病历编号='+@FaultNum
exec sp_executesql @sqls,N'@a nvarchar(1000) output',@Discription output
set @Discriptions=@Discriptions+isnull(@Discription,'')
if (@FaultNum<>@FaultNums) goto j1
end
return @Discriptions
end
set @sqls='select @a=病历描述 from ' + @Kind+'病历表 where 病历编号='+@FaultNum
exec sp_executesql @sqls,N'@a nvarchar(1000) output',@Discription output