`
wsql
  • 浏览: 11808037 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

存储过程的基本用法

 
阅读更多
if db_id('testProcedure') is not null 
begin
	use master
	drop database testProcedure
end

create database testProcedure
go
use testProcedure

create table Users
(
	ID bigint identity primary key,
	UserName nvarchar (20) not null unique,
	Description nvarchar (20),
	Password varchar(20),
	Authority tinyint check (Authority in (0,1,2))
)
go
--定义查询所有用户的存储过程
create proc spSelectAll as
	select * from Users
go

--调用存储过程
exec spSelectAll;
execute spSelectAll;
exec sp_helptext spSelectAll;--查看定义语句
select [text] from syscomments where id =(
	select Id from sysobjects where name='spSelectAll')--查看定义语句 
go

--定义插入某用户的存储过程
create proc spInsertUser(@un nvarchar(20), @pwd varchar(20), @des nvarchar(20), @au tinyint=2) as
begin --定义体中有多条语句,建议用begin……end构成语句块
	if exists(select * from Users where username = @un) return
	insert into Users values(@un, @des, @pwd, @au)
end
go

--调用存储过程
exec spInsertUser 'cshlj','一般用户','123',1;
exec spInsertUser 'ishlj','管理员','123',0;
exec spInsertUser 'guesthlj','过客匆匆','123';
go

--定义修改密码的存储过程
create proc spUpdatePassWord(@un nvarchar(20), @pwd varchar(20)) as
begin
	update Users set Password=@pwd where username = @un
	return @@rowcount --返回上一语句影响的行数,可用于判断是否修改成功
end
go

--调用存储过程
exec spUpdatePassWord 'cshlj', '123456'

go

--定义删除某用户的存储过程
create proc spDeleteUser(@un nvarchar(20)) as
	delete from Users where username = @un
go

--调用存储过程
exec spDeleteUser 'guesthlj'

go
--定义查询按用户名模糊查询的存储过程
create proc spSelectByUsername(@un nvarchar(20)) as
	select * from Users where username like '%'+ @un +'%'
go

--调用存储过程
exec spSelectByUsername @un='cs';
execute spSelectByUsername 'cs';
go

--定义查询按用户名和权限查询的存储过程
create proc spGetOneUser(@un nvarchar(20)='cshlj', @au tinyint=0) as
	select * from Users where username = @un and Authority=@au
go

--调用存储过程
exec spGetOneUser; --参数都使用默认值
exec spGetOneUser 'ishlj'; --第二个参数使用默认值
exec spGetOneUser 'ishlj', 1; --参数都不使用默认值
exec spGetOneUser @un='ishlj', @au=1; --指定参数名
exec spGetOneUser @au=1, @un='ishlj';--指定参数名时,参数顺序可以与定义时的顺序不一致
go

--建立登录存储过程,验证用户名和密码
create proc spLogin(@user nvarchar(20),@pass varchar(20),@auth tinyint output)
with encryption--带加密选项,避免定义语句被查看
as
begin
	if(select Count(*) from Users where UserName=@user and password=@pass)=0
		return 0 
	else
	begin  	
   		select @auth = [authority] from Users where UserName=@user
		return 1
	end
end

go

declare @res int, @au tinyint
exec @res=spLogin 'cshlj', '123456', @au output; --输出参数必须带output
select @res as 返回值, @au as 权限 --显示查询结果

go

--修改存储过程的定义
alter proc spLogin(@user nvarchar(20),@pass varchar(20),@auth tinyint output)
as
begin	
	select @auth = [authority] from Users where UserName=@user and password=@pass
	if @auth is null return 0	
	return 1
end

go
--删除存储过程
drop proc spLogin
C#中调用存储过程方法见后一篇
分享到:
评论

相关推荐

    课程设计基于python+mediapipe+opencv开发的手势识别系统源码(含超详细注释).zip

    课程设计基于python+mediapipe+opencv开发的手势识别系统源码(含超详细注释).zip个人经导师指导并认可通过的98分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。 课程设计基于python+mediapipe+opencv开发的手势识别系统源码(含超详细注释).zip个人经导师指导并认可通过的98分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。 课程设计基于python+mediapipe+opencv开发的手势识别系统源码(含超详细注释).zip个人经导师指导并认可通过的98分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。 课程设计基于python+mediapipe+opencv开发的手势识别系统源码(含超详细注释).zip个人经导师指导并认可通过的98分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计。

    yolov7 车牌检测 车牌识别 中文车牌识别 检测 支持双层车牌 支持12种中文车牌

    yolov7

    基于MQTT的智能宠物投喂系统.zip

    基于MQTT的智能宠物投喂系统:STM32、ESP8266、LCDST7789、压力传感器、按键中断修改定时投喂时间、云平台

    Qt进阶:优秀QT开源项目

    详细说明:https://blog.csdn.net/u010168781/article/details/138924179 1、Krita 2、QGIS 3、Kdenlive 4、Clementine 5、Syncthing 6、KDevelop

    2023-04-06-项目笔记 - 第一百三十四阶段 - 4.4.2.132全局变量的作用域-132 -2024.05.15

    2023-04-06-项目笔记-第一百三十四阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.132全局变量的作用域_132 - 2024-05-15

    matlab基于区间知识的大脑情绪学习算法.zip

    matlab基于区间知识的大脑情绪学习算法.zip

    Scrapy-0.8.win32.exe

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    setuptools-34.1.0-py2.py3-none-any.whl

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    基于python+PyQt5开发的智能照明控制系统上位机软件源码.zip

    基于python+PyQt5开发的智能照明控制系统上位机软件源码.zip

    pytest-4.6.3.tar.gz

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    麦肯锡战略咨询经验.ppt

    麦肯锡战略咨询经验.ppt

    Redis入门基础篇+源码(springboot、maven)

    Redis入门基础篇-源码

    基于Python+flask+echarts实现的天气展示系统源码.zip

    基于Python+flask+echarts实现的天气展示系统源码.zip

    人工水母优化算法JS MATLAB源码, 应用案例为函数极值求解以及优化svm进行分类,代码注释详细,可结合自身需求进行应用

    人工水母优化算法JS MATLAB源码, 应用案例为函数极值求解以及优化svm进行分类,代码注释详细,可结合自身需求进行应用

    pytest-3.2.5.tar.gz

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    四旋翼双环pid控制matlab版本R2020b源码.zip

    四旋翼双环pid控制matlab版本R2020b源码.zip

    1-3.py

    1-3

    基于YOLOV5部署性能比较 opencvDNN、ONNX onnxruntime Openvion源码.zip

    基于YOLOV5部署性能比较 opencvDNN、ONNX onnxruntime Openvion源码.zip

    第五次作业答案.zip

    第五次作业答案.zip

Global site tag (gtag.js) - Google Analytics