大家好,我是全栈小5,欢迎来到《小5讲堂》。
这是《Sql Server》系列文章,每篇文章将以博主理解的角度展开讲解。
温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!
目录
前言
温故而知新,最近在写sql查询语句,需求是随机查询表的其中一条记录。
基于这个查询,顺便把数据库自定义函数、存储过程这个两个知识点重温固定下。
因此,本篇文章将在随机查询一条表记录的基础上,把sql语句封装到存储过程里。
随机查询语句
要在SQL Server中随机生成一条记录,可以使用ORDER BY NEWID()来随机排序结果集,并使用TOP 1来限制结果集返回一条记录。
例如:
select top 1*from(
select 1asid,'张三11'as nameValue union all select 2asid,'张三22'as name union all
select 3asid,'张三33'as nameValue union all select 4asid,'张三44'as name union all
select 5asid,'张三55'as nameValue union all select 6asid,'张三66'as name union all
select 7asid,'张三77'as nameValue union all select 8asid,'张三88'as name
) a
order by newid()
select 1asid,'张三11'as nameValue union all select 2asid,'张三22'as name union all
select 3asid,'张三33'as nameValue union all select 4asid,'张三44'as name union all
select 5asid,'张三55'as nameValue union all select 6asid,'张三66'as name union all
select 7asid,'张三77'as nameValue union all select 8asid,'张三88'as name
存储过程
基本概念
在 SQL Server 中,存储过程是一组预编译的 SQL 语句和逻辑,存储在数据库服务器上以便重复使用。
它们类似于应用程序中的函数,可以接受参数并执行一系列的 SQL 语句,然后返回结果或执行特定的操作。
存储过程可以帮助提高性能、安全性和可维护性,同时减少网络流量。
存储过程通常用于执行复杂的数据操作、事务控制、权限控制等。
基本结构
CREATE PROCEDURE [schema_name.]procedure_name
@parameter1 datatype,@parameter2 datatype
AS
BEGIN
-- 存储过程逻辑
END;
- schema_name(可选):存储过程所属的模式。
- procedure_name:存储过程的名称。
- @parameter1, @parameter2:存储过程的参数列表,包括参数名和数据类型。
- AS:指示存储过程逻辑的开始。
- 存储过程逻辑:存储过程内部包含一系列 SQL 语句和控制流程,用于执行特定的操作或计算。
- END:指示存储过程逻辑的结束。 存储过程可以包含各种 SQL 语句、条件控制、循环等逻辑,以及事务处理和错误处理代码。创建存储过程后,可以通过调用存储过程的名称并传递相应的参数来执行它。
基础例子
下面是一个简单的 SQL Server 存储过程的示例,该存储过程接受一个参数 @employee_id,并返回该员工的姓名和工资信息:
CREATE PROCEDURE GetEmployeeInfo
@employee_id INT
AS
BEGIN
SELECT EmployeeName, Salary
FROM Employees
WHERE EmployeeID = @employee_id;
END;
在这个示例中:
- 存储过程名为 GetEmployeeInfo。
- 参数 @employee_id 的数据类型为 INT。
- 存储过程的逻辑部分使用了简单的 SELECT 查询语句,根据提供的 @employee_id 查询员工的姓名和工资信息。
- END 结束存储过程的逻辑部分。 要执行这个存储过程,可以使用如下的 SQL 语句:
EXEC GetEmployeeInfo @employee_id =12345;
其中 12345 是要查询的员工的 ID。
存储过程封装
-- 创建存储过程
create procedure getDataPro
@idintas
begin
select top 1*from(
select 1asid,'张三11'as nameValue union all select 2asid,'张三22'as name union all
select 3asid,'张三33'as nameValue union all select 4asid,'张三44'as name union all
select 5asid,'张三55'as nameValue union all select 6asid,'张三66'as name union all
select 7asid,'张三77'as nameValue union all select 8asid,'张三88'as name
) a
where id=1
order by newid()
end
-- 执行存储过程
exec getDataPro 8
文章推荐
【Sql Server】随机查询一条表记录,并重重温回顾下自定义函数的封装和使用
【Sql Server】锁表如何解锁,模拟会话事务方式锁定一个表然后进行解锁
【Sql Server】通过Sql语句批量处理数据,使用变量且遍历数据进行逻辑处理
【新星计划回顾】第六篇学习计划-通过自定义函数和存储过程模拟MD5数据
【新星计划回顾】第四篇学习计划-自定义函数、存储过程、随机值知识点
【Sql Server】Update中的From语句,以及常见更新操作方式
【Sql server】假设有三个字段a,b,c 以a和b分组,如何查询a和b唯一,但是c不同的记录
【Sql Server】新手一分钟看懂在已有表基础上修改字段默认值和数据类型
总结:温故而知新,不同阶段重温知识点,会有不一样的认识和理解,博主将巩固一遍知识点,并以实践方式和大家分享,若能有所帮助和收获,这将是博主最大的创作动力和荣幸。也期待认识更多优秀新老博主。
版权归原作者 全栈小5 所有, 如有侵权,请联系我们删除。