sql – 如何创建可选择搜索列的存储过程?
发布时间:2020-12-12 08:49:05 所属栏目:MsSql教程 来源:网络整理
导读:我正在研究将要查询我们员工数据库的工作申请.最终用户希望能够根据标准名称/部门标准进行搜索,但他们也希望灵活地查询在卫生部门工作的名为“James”的所有人.我想避免的一件事是简单地使存储过程获取参数列表并生成一个SQL语句来执行,因为这将打开内部级别
我正在研究将要查询我们员工数据库的工作申请.最终用户希望能够根据标准名称/部门标准进行搜索,但他们也希望灵活地查询在卫生部门工作的名为“James”的所有人.我想避免的一件事是简单地使存储过程获取参数列表并生成一个SQL语句来执行,因为这将打开内部级别的SQL注入门.
这可以做吗 解决方法虽然COALESCE的技巧很整洁,但我的首选方法是:CREATE PROCEDURE ps_Customers_SELECT_NameCityCountry @Cus_Name varchar(30) = NULL,@Cus_City varchar(30) = NULL,@Cus_Country varchar(30) = NULL,@Dept_ID int = NULL,@Dept_ID_partial varchar(10) = NULL AS SELECT Cus_Name,Cus_City,Cus_Country,Dept_ID FROM Customers WHERE (@Cus_Name IS NULL OR Cus_Name LIKE '%' + @Cus_Name + '%') AND (@Cus_City IS NULL OR Cus_City LIKE '%' + @Cus_City + '%') AND (@Cus_Country IS NULL OR Cus_Country LIKE '%' + @Cus_Country + '%') AND (@Dept_ID IS NULL OR Dept_ID = @DeptID) AND (@Dept_ID_partial IS NULL OR CONVERT(varchar,Dept_ID) LIKE '%' + @Dept_ID_partial + '%') 这些类型的SP可以轻松地生成代码(并重新生成表格更改). 您有几个处理数字的选项,这取决于您是否需要准确的语义或搜索语义. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |