create procedure [dbo].[query_all_alarm_history]
@userCode varchar(5),
@startTime datetime,
@endTime datetime,
@alarmIds varchar(50) ------------------参数类型 'aa,bb,cc,dd'
as
SELECT
UsersInfo.User_name + '(' + UsersInfo.User_code + ')' AS userName,
CONVERT(CHAR(19), UseAlarmHistoryData.Check_time, 20) AS strCheckTime,
UseAlarmHistoryData.Alarm_ID AS alarmId,
(dbo.UsersInfo.User_name + '.' + AlarmIDDef.Alarm_name ) AS alarmName,
AlarmIDDef.Alarm_ename AS alarmEname,
UseAlarmHistoryData.Alarm_type AS alarmType,
AlarmTypeDef.Alarm_type_desp AS alarmTypeDesp,
UseAlarmHistoryData.Alarm_value AS alarmValue,
AlarmValueDef.Alarm_value_desp AS alarmValueDesp,
UseAlarmHistoryData.Source_value as sourceValue,
UseAlarmHistoryData.Treat_desp AS treatDesp,
CASE WHEN UseAlarmHistoryData.Source_value = 0 THEN
'未处理'
ELSE
'已处理'
END AS sourceValueDesc
FROM
UseAlarmHistoryData LEFT OUTER JOIN
AlarmTypeDef ON
UseAlarmHistoryData.Alarm_type = AlarmTypeDef.Alarm_type LEFT OUTER JOIN
AlarmValueDef ON
UseAlarmHistoryData.Alarm_value = AlarmValueDef.Alarm_value LEFT OUTER JOIN
AlarmIDDef ON
UseAlarmHistoryData.Alarm_ID = AlarmIDDef.Alarm_ID LEFT OUTER JOIN
UsersInfo ON UseAlarmHistoryData.User_code = UsersInfo.User_code
WHERE
1=1 AND
(@userCode='') or (@userCode<>'' and ((UseAlarmHistoryData.User_code=@userCode) ))
AND (UseAlarmHistoryData.Check_time >=@startTime)
AND (UseAlarmHistoryData.Check_time <=@endTime)
AND (UseAlarmHistoryData.Alarm_ID in (SELECT F1 FROM dbo.fun_splitstr(@alarmIds,',')) or @alarmIds = '')
ORDER BY
dbo.UseAlarmHistoryData.Check_time desc
-----------------------------------------------------------------函数
create function [dbo].[fun_splitstr]
(
@str varchar(200),
@strSeprate varchar(10)
)
returns @temp table(F1 varchar(200))
as
begin
declare @i int
set @str=rtrim(ltrim(@str))
set @i=charindex(@strSeprate,@str)
while @i>=1
begin
insert @temp values(left(@str,@i-1))
set @str=substring(@str,@i+1,len(@str)-@i)
set @i=charindex(@strSeprate,@str)
end
if @str<>''
insert @temp values(@str)
return
end
sql传入参数以字符串 如 ‘aa,bb,cc,dd’ 形式即可 函数自动转换为 'aa','bb'...
网上还有很多类似拼接字符串的,那种方式过于繁琐,尤其遇到较复杂sql语句的时候,单引号将会是你的噩梦