gpt4 book ai didi

sql - 如何创建一个可以选择搜索列的存储过程?

转载 作者:行者123 更新时间:2023-12-02 10:33:49 24 4
gpt4 key购买 nike

我正在开发一个工作申请,该申请将查询我们的员工数据库。最终用户希望能够根据标准名称/部门标准进行搜索,但他们也希望能够灵活地查询在卫生部门工作的所有名字为“James”的人员。我想要避免的一件事是简单地让存储过程获取参数列表并生成要执行的 SQL 语句,因为这将为内部级别的 SQL 注入(inject)打开大门。

这可以做到吗?

最佳答案

虽然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 可以轻松生成代码(并针对表更改重新生成)。

您有几种处理数字的选项 - 取决于您想要精确语义还是搜索语义。

关于sql - 如何创建一个可以选择搜索列的存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/205526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com