sql server 存储过程的学习
存储过程学习笔记
存储过程就是一条或者多条sql语句的集合,为了实现特定任务,而将一些需要多次调用的固定操作语句编写成程序段,这些程序段存储在服务器上,有数据库服务器通过程序来调用。
T_SQL:存储过程是值保存的T_SQL语句集合,可以接受和返回用户提供的参数,存储过程也可能从数据库向客户端应用程序返回数据。
存储过程的优点就不多说了开始学习吧!
use db_test
create table student(userid varchar(10),username varchar(20),identityd varchar(20),classId varchar(20))insert into student values('20180312','小红','5131002121121212','6024201803'),
('20180313','小明','121354564654','6024201803'),
('20180314','小孙','6545487','6024201803'),
('20180315','小何','78921548','6024201803')
create table xfClass(classid varchar(10),classname varchar(20),rem varchar(20))
insert into xfClass values('6024201803','三班','学费比较高'),
('6024201802','二班','学费有点高')
select * from xfClass
create table test1(id varchar(10),name varchar(20),rem varchar(20)) --以前的测试表部分过程在这个表中完成
--查看存储过程p_InsT1是否存在
if (exists (select * from sys.objects where name = 'p_InsT1'))
drop proc p_InsT1
go--上面这句判断比较占用空间,所以后面创建存储过程我就不写了这句判断了
--创建一个存储过程p_InsT1
create proc p_seluser
as
select * from student a left join xfclass b on a.classId=b.classid ;
go--执行sp_name存储过程exec p_seluser![]()
创建带参数的存储过程
create proc p_seluser_name(
@sName varchar(20)
)
as
select * from student a left join xfclass b on a.classId=b.classid where username=@sName; --这段sql 应该可以优化,以后进行详细了解后在分享
go
--执行sp_name存储过程
exec p_seluser_name '小红'![]()
存储过程的修改
方法1:直接修改,直接将新的过程将以前的过程进行覆盖。
alert proc p_insT1asselect * from test1方法2:找到存储过程文件进行修改
在数据库下可编程性中存储过程里找到需要修改的存储过程
修改之后运行一下该过程,修改完成。
上面用的都是常用存储过程,下面了是不常用存储过程
create proc p_tempwith recompile --设置为不缓存asselect * from student;
create proc proc_temp_encryptionwith encryptionasselect * from student;goexec proc_temp_encryption;exec sp_helptext p_set7; --未加密可直接查看源语句exec sp_helptext proc_temp_encryption --加密后不可以直接查看源语句
create proc p_findStNa(@id varchar(20)='%p%')asdelete table test1 where id like @idexec proc_p_findStNa //如果不加参数则直接使用定义的参数‘%p%’exec proc_p_findStNa 'pp'; //如果不加参数则直接使用定义的参数
查询出来的结果不以表格进行输出declare @id varchar(20),@name varchar(20),@rem varchar(20)
set @id='2'
select @id=id,@name =name,@rem=rem from test1 where id=@id
--select @id, @name,@rem;
print @id+''+ @name+''+@rem;
通过函数对参数进行赋值create proc p_getName(@id varchar(20),--默认输入参数@name varchar(20) out, --输出参数@age varchar(20) output --输入输出参数)asselect @name = name ,@age =age from test1 where id=@id and sex=@age;--运行declare @id varchar(20),@name varchar(20),@temp varchar(20);set @id='7';set @temp='15';--运行存储过程exec p_getName @id,@name out,@tem output;--直接输出存储过程中的返回值select @name,@temp;
if (object_id('proc_cursor', 'P') is not null)drop proc proc_cursorgocreate proc proc_cursor --声明一个存储过程@cur cursor varying output --声明游标变量forward_only变量为@curasset @cur = cursor forward_only static forselect id, name, age from student;open @cur; --打开游标go--调用declare @exec_cur cursor; --声明变量 游标类型declare @id int,@name varchar(20),@age int;exec proc_cursor @cur = @exec_cur output;--调用存储过程fetch next from @exec_cur into @id, @name, @age;--将游标信息存放到指定变量中while (@@fetch_status = 0) --存放每一条beginfetch next from @exec_cur into @id, @name, @age;print 'id: ' + convert(varchar, @id) + ', name: ' + @name + ', age: ' + convert(char, @age);endclose @exec_cur;deallocate @exec_cur;--删除游标
sql server 存储过程的学习的更多相关文章
- mysql与sql server参照对比学习mysql
mysql与sql server参照对比学习mysql 关键词:mysql语法.mysql基础 转自桦仔系列:http://www.cnblogs.com/lyhabc/p/3691555.html ...
- SQL Server存储过程中使用表值作为输入参数示例
这篇文章主要介绍了SQL Server存储过程中使用表值作为输入参数示例,使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据,这样 ...
- SQL Server存储过程Return、output参数及使用技巧
SQL Server目前正日益成为WindowNT操作系统上面最为重要的一种数据库管理系统,随着 SQL Server2000的推出,微软的这种数据库服务系统真正地实现了在WindowsNT/2000 ...
- SQL Server 存储过程(转载)
SQL Server 存储过程 Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这 ...
- 14、SQL Server 存储过程
SQL Server 存储过程 存储过程类似函数,可以重复使用.相对于函数,存储过程拥有更强大的功能和更高的灵活性. 存储过程中可以包含逻辑控制语句和数据操作语句,可以接受参数,输出参数,返回单个值或 ...
- (摘录)SQL Server 存储过程
文章摘录:http://www.cnblogs.com/hoojo/archive/2011/07/19/2110862.html SQL Server 存储过程 Transact-SQL中的存储过程 ...
- Sql Server 存储过程中查询数据无法使用 Union(All)
原文:Sql Server 存储过程中查询数据无法使用 Union(All) 微软Sql Server数据库中,书写存储过程时,关于查询数据,无法使用Union(All)关联多个查询. 1.先看一段正 ...
- Yii2.0调用sql server存储过程并获取返回值
1.首先展示创建sql server存储过程的语句,创建一个简单的存储过程,测试用. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE P ...
- C# 调用存储过程 Sql Server存储过程 存储过程报错,程序中的try
C#程序调用Sql Server存储过程,存储过程中报错情况,返回值... 0.SQL存储过程 USE [Opos] GO /****** Object: StoredProcedure [dbo]. ...
随机推荐
- Spring Security OAuth2实现单点登录
1.概述 在本教程中,我们将讨论如何使用 Spring Security OAuth 和 Spring Boot 实现 SSO(单点登录). 本示例将使用到三个独立应用 一个授权服务器(中央认证机制) ...
- Maven 进阶
一.Maven 版本管理 Maven 的推荐版本号约定为:主版本号.次版本号.增量版本号-<里程碑版本> 开发中的版本要以 -SNAPSHOT 结尾,因为这种快照版本是支持 jar 包被覆 ...
- 【区块链Go语言实现】Part 1:区块链基本原型
0x00 介绍 区块链(Blockchain)是21世纪最具革命性的技术之一,目前它仍处于逐渐成熟阶段,且其发展潜力尚未被完全意识到.从本质上讲,区块链只是一种记录的分布式数据库.但它之所以独特,是因 ...
- Java设计模式学习记录-代理模式
代理模式 代理模式是常见设计模式的一种,代理模式的定义是:为其他对象提供一种代理以控制对这个对象的访问. 在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起 ...
- C# ABP 允许跨域请求
备注:无论有没有安装 apb zero模块,都可以使用本文的跨域 首先配置Web Api: 1. 在Web API项目下,安装包 Install-Package Microsoft.AspNet.We ...
- ASP.NET MVC显示UserControl控件(扩展篇)
昨晚Insus.NET有怀旧一下<念念不忘,ASP.NET MVC显示WebForm网页或UserControl控件>http://www.cnblogs.com/insus/p/3641 ...
- 【手记】解决Resharper 2018.x起本机license server不能用的问题
ReSharper升级到2018版后,一直用的好好的本机license server(下称LS)不能用了,报The license server address is incorrect....在网上 ...
- 34.Linux-printk分析、使用__FILE__, __FUNCTION__, __LINE__ 调试
本节学习目的 1)分析printk()函数 2)使用printk()调试驱动 1.在驱动调试中,使用printk(),是最简单,最方便的办法 当uboot的命令行里的“console=tty1”时,表 ...
- hadoop配置历史服务器&&配置日志聚集
配置历史服务器 1.在mapred-site.xml中写入一下配置 <property> <name>mapreduce.jobhistory.address</name ...
- php命令行按模板生成应用的入口文件
接着这篇文章php命令行生成项目结构 继续改造: ghostwu@dev:~/php/php1/12$ tree . ├── app │ └── index.php ├── core │ ├─ ...
