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#中调用存储过程方法见
后一篇。
分享到:
相关推荐
相当的简明,清晰,如果你想对在oracle数据库中如何写存储过程,那这就是你想要的,还等什么,赶快下载吧
结合实例,介绍了oracle存储过程的用法,包括定义,变量类型,游标,流程分支语句的使用
DB2数据库存储过程,介绍DB数据库的运行原理和使用方法
1.1 存储过程基本结构(PROCEDURE) 3 1.1.1创建存储过程 3 1.1.2 存储过程删除 5 1.1.3 调用存储过程 5 1.2存储函数(FUNCTIONE) 6 1.2.1 创建存储函数 6 1.2.2 删除存储函数 7 1.3 包(package) 7 1.3.1 包的基本结构 ...
存储过程学习一 ,基本用法等等 后续更新。
oracle 存储过程的基本语法非让大于20个字,好无聊啊
2.3 存储过程的基本操作 2.3.1 通过Query Analyzer执行存储过程 2.3.2 通过Enterprise Manager管理存储过程 2.3.3 在Enterprise Manager中编辑存储过程 2.3.4 在Query Analyzer中编辑存储过程 2.3.5 语法错误 2.3.6 ...
本文实例讲述了Python中执行存储过程及获取存储过程返回值的方法。分享给大家供大家参考,具体如下: 在Pathon中如何执行存储过程呢?可以使用如下方法: 存储过程定义基本如下: ALTER procedure [dbo]. [mysp] @...
适合新手,用到了最基本的复合数据类型,游标,存储过程
很多查询类的存储过程会返回一个表结构的结果集,如果在其他存储过程中需要用到这个结果集,为了避免编写重复的sql脚本,可以直接使用前者的查询结果。 如,存储过程sp_GetBorrowRecord @BeginTime,@EndTime 可以...
我们大家都知道MySQL 存储过程是从 MySQL 5.0 开始逐渐增加新的功能。存储过程在实际应用中也是优点大于缺点。不过最主要的还是执行效率和SQL 代码封装。特别是 SQL 代码封装功能,如果没有存储过程。
4.掌握SQL Server 2005查询的基本使用。 5.掌握应用SQL Server Management Studio创建数据库的方法。 6.掌握应用SQL Server Management Studio修改和查看数据库的方法。 7.掌握应用SQL Server Management Studio删除...
要求选用顺序存储结构和二叉链表存储结构实现抽象数据类型二叉树的基本操作。有个亮点是利用字符在dos界面显示二叉树的结构形态。 里面包含了完整的源程序和实验报告文档。 实验报告包含了完整的步骤包括: 一.抽象...
主要介绍了mysql存储过程,结合图文与实例形式较为详细的分析了mysql存储过程基本概念、原理、用法及相关操作注意事项,需要的朋友可以参考下
2. 存储过程的使用方法。 3. 触发器的使用方法。 二、实验任务 1. 常见系统函数的操作。 2. 创建触发器。 3. 创建和调用存储过程。 三、操作要点 1.掌握T-SQL基本语法 2.建立对象时应该先排查在系统表中是否有...
2.3 存储过程的基本操作 2.3.1 通过Query Analyzer执行存储过程 2.3.2 通过Enterprise Manager管理存储过程 2.3.3 在Enterprise Manager中编辑存储过程 2.3.4 在Query Analyzer中编辑存储过程 2.3.5 语法错误 2.3.6 ...
主要介绍了mysql存储过程之游标(DECLARE)原理与用法,结合实例形式详细分析了mysql存储过程游标(DECLARE)的基本功能、原理、使用方法及操作注意事项,需要的朋友可以参考下
存储过程及基本使用 #1、什么是存储过程? 存储过程(Stored Procedure)是为了完成特定功能的SQLt语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行,类似于编程...