存储过程带有模糊查询条件,存储过程多条件查询

图片 1

存储过程带有模糊查询条件,存储过程多条件查询。 mysql 存款和储蓄进度多规格查询
自家在做贰个询问战绩的系列,计划在mysql里面成立一个积累进度,参数比如:学号,姓名,成绩,
当今自己要查成绩,假诺传入的参数是null则不相配,例如参数列表(null,姓名,成绩),那么查询语句就是select * from table where name = ‘姓名’ and score =
‘战绩’,轻便的话正是要是传入了参数,那么查询结果就要切合,不过本人以往直接用if
else语句开采太费劲了,这里五个尺码亟待2^3 = 8个if
else分支语句,假使基准更加多的话就是成指数增加了,有未有如何好一点的化解放啊能够解决那么些难点呀

世家都清楚使用存款和储蓄进程的低价当中有2点

叁个轻巧易行的积攒进度:

当点击查询后相当全部条件

1、参数查询安全(用参数就安然?)

Create procedure [dbo].[Proc_SeachJob] 
(@startRecordIndex int,
@endRecordIndex int,
@seach nvarchar(10),
@docount bit)
as
set nocount on
if(@docount=1)
--只需要把%与搜索的字符串用拼接的方式即可
select count(*) from Job where name like '%@seach%' or work_address like '%@seach%'
else
begin
declare @indextable table(id int identity(1,1),nid int)
set rowcount @endRecordIndex
insert into @indextable(nid) select ID from Job  where name like '%@seach%' or work_address like '%@seach%' order by CreateTime desc
select * from Job O,@indextable t where O.ID=t.nid
and t.id between @startRecordIndex and @endRecordIndex order by t.id
end
set nocount off

图片 2

2、存款和储蓄进程在创造时预编写翻译,实践功能比SQL语句要高

 

在举行多规格查询时方可

 

CREATE PROC Getcourse

听他们讲这两点,看看下边这段在此在此之前平常写的存放进程吧(查询数据)

@Condition

CREATE PROCEDURE [dbo].[usp_TestExec]
    @Account VARCHAR(50)='',
    @UserName VARCHAR(50)=''
AS
BEGIN
    DECLARE @SQL VARCHAR(8000)
    SET @SQL='SELECT * FROM dbo.tb_Test WHERE 1=1';
    IF(ISNULL(@Account,'')<>'') SET @SQL=@SQL+' AND Account LIKE ''%'+@Account+'%'''
    IF(ISNULL(@UserName,'')<>'') SET @SQL=@SQL+' AND UserName LIKE ''%'+@UserName+'%'''

    EXEC(@SQL)

END    

AS

运作,测量试验没难题。

SELECT * FROM course

而是有哪个人会思索到注入?

WHERE (c# LIKE’%’+@Condition+’%’ OR cname LIKE’%’+@Condition+’%’ OR t#
LIKE’%’+@Condition+’%’)

瞅着存款和储蓄进程本人觉着有八个难点

admin

网站地图xml地图