存储过程和变量

在SQL Server中,可以定义子程序存放在数据库中,这样子程序称为存储过程

SQL Server中支持以下几种类型的存储过程

1,系统存储过程(以“sp_”为前缀,存储在master里面)

2,本地存储过程(存储在用户自定义的数据库中)

3,扩展存储过程(以“xp_”为前缀,存储在master里面)

4,临时存储过程(以#开头)

注:用户定义的存储过程不能以sp/xp开头

创建存储过程

create  procedure   存储过程名  as  SQL语句

执行存储过程

Exec(execute)  存储过程名

修改存储过程

alter  proc   存储过程名  as  SQL语句

删除存储过程

drop  procedure  存储过程名

查看存储过程

sp_helptext  查看存储过程的定义

sp_help  查看储存过程有关信息

sp_depends    查看存储过程所依据的对象

sp_rename   存储过程原名,存储过程新名

存储过程中参数的使用

存储过程可以带一个或多个输入参数

create procedure  存储过程名

(@ 参数名  数据类型[=默认值])

as  SQL语句

执行带参数的存储过程

①使用参数名传递数值

execute  存储过程名  [@参数名=参数值]

exec  p_a  @sname=‘aaa‘,@pwd=‘123‘

②按参数位置传递参数

execute  存储过程名  参数值1,参数值2

exec  p_a  ‘aaa‘,‘123‘

加密存储过程

create  procedure p_mi  (参数组)  with  encryption----加密  as  SQL语句

带输出参数的存储过程-----从存储过程中返回一个或多个值

create   procedure   存储过程名  @参数名  数据类型   output   as  SQL语句

变量

T-SQL中变量分为局部变量和全局变量

声明局部变量  declare   以@开头的变量名  类型(长度)

局部变量赋值  set  局部变量名=值

注:局部变量和赋值必须分开

全局变量  以@@开头是SQL系统内部事先定义好的变量

运算符:

算数运算符:+,-,*,/,%

赋值:=

比较:>,<.....

逻辑运算符:

all,and,any,some,betwwen,exists,in,like,not,or

流程控制

begin...end:定义语句块,相当于一对括号

Break:退出最内层的while循环

continue:重新开始while循环

goto:无条件跳转语句

if...else:满足条件执行if否则执行else

return:无条件退出

waitfor:为语句的执行设置延迟

while:条件为真时执行语句

return:

declare  @i int

set @i=0

while  @i<10

begin

set  @[email protected]+1

if   @1%3=0

return   -----终止整个批处理

print @i     --最终会输入3

end

使用return返回状态值

存储过程中  return于output区别

共同点:都返回值 (return只能返回int类型)

不同点:

output是定义变量是不是可以返回值

时间: 2024-10-03 22:47:16

存储过程和变量的相关文章

存储过程--表变量和while简单运用

1.sql创建表/*订单*/CREATE TABLE Orders ( PRIMARY KEY(Id), Id int, Name varchar(20))2.存储过程ProTestDT    1)创建表变量@NewDT    2)给表变量@NewDT赋值(INSERT)    3)循环表变量@NewDT,更新实际表dbo.Orders 1 CREATE PROCEDURE ProTestDT 2 AS 3 BEGIN 4 DECLARE @NewDT TABLE 5 ( 6 dtID int,

【转】SQL SERVER 存储过程中变量的作用域

今天遇到一个很有趣的事情,以前没有注意过,所以记下来. 先来看例子. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE GetOrderBeforeDays @BeforDays INT AS BEGIN IF @BeforDays < 0 BEGIN DECLARE @Today DATETIME SET @Today = GETDATE() DECLARE @Date DATETIME SET @Date =

存储过程使用表变量或临时表代替游标Fetch实例,访问远程数据库

定义表变量是可以直接操作在内存中的数据,比较快.临时表在大数据量时会比游标使用的资源少.还是要看具体情况了.也有可能在实际优化过程中相互替换呢. 留作记忆的代码如下: 1 if object_id('tempdb..#Tmp') is not null 2 Begin 3 drop table #Tmp 4 End 5 6 create table #Tmp --创建临时表#Tmp为获取远程设备信息使用 7 ( 8 deviceId varchar(50), 9 deviceNo varchar

数据库存储过程及变量的使用

-定义变量 declare @sum int --变量赋值 set @sum=1 select @sum=3 --变量使用 print @sum declare @string varchar(20) set @string='abcdef' set @string=substring(@string,3,1) print @string --全局变量 print @@error print @@rowcount -- declare @pi decimal(18,2),@r decimal(1

存储过程,变量,流程控制语句

原文地址:https://www.cnblogs.com/lxn521/p/12420158.html

索引、视图、SQL优化以及数据库存储过程

一.索引 索引是查询优化最有效和最常用的技术 索引是一个单独的.物理的数据库结构,它是指向表中某一列或若干列上的指针列表. mysql中,一个表的物理存储由两部分组成,一部分用于存放表的数据,另一部分存放索引,当进行数据搜索时,mysql会首先搜索索引,从中找到所需数据的起始位置的指针,再直接通过指针查找目标数据. 1.创建索引: CREATE INDEX 索引名 on 表名(要添加索引的列名) 可以给一个表中的多个列添加索引 通过在查询sql语句前加一句Explain可以分析索引效率, 有这样

表变量类型的创建及使用

sql表变量是sql2005以后才出来的,在批量提交数据还是很好用 一:创建表变量 --创建表变量 CREATE TYPE TABLEDec AS TABLE( id INT , num NVARCHAR(20) ) 二:存储过程用到表变量 --存储过程使用表变量 CREATE PROC tableDec @tabledec TABLEDec readonly AS INSERT INTO trantest ( num ) SELECT ( num ) FROM @tabledec GO 三:测

mysql 存储过程的实现原理

一.描述 存储过程是一组可以完成特定功能的SQL语句集,经编译后存储在数据库中 statement语句(DDL.DML.导出及管理语句等).异常处理.流程控制二.创建存储过程 系统做语句分析,如果没有出现词.语法等的错误则存入系统表mysql.proc中三.调用存储过程1.编译 存储过程体中的语句集会被解析为一组指令集 存储过程的执行就是从该组指令集的第一个指令开始顺序执行 系统对存储过程的解析是以语句或结构为单位的,该部分处理在YACC中完成 注意:语句和指令之间并非一对一的对应关系 2.优化

集算器替代存储过程实现报表数据源

存储过程是SQL语句和流程控制语句的集合,常用来把一个复杂的计算目标分解为多个简单的计算步骤.虽然以复杂性换来了灵活性,但SQL语句固有的缺点仍然体现在存储过程中,比如:分步不彻底.数据无序.缺乏集合.缺乏引用,之前我们也分析过存储过程作为报表数据源的利弊,可点击这里查看. 集算器解决了存储过程的上述缺陷,降低了对开发人员的技术要求,是存储过程理想的替代工具. 报表例子说明 某电信产品厂商有一张报表,主要目的是分析优势产品的销售额.销量.环比等指标,其中优势产品的定义是"在每个州的销量均在前10