结合java讲sql server存储过程

1.注释

--第一种注释
/*第二种
注释*/

2.批处理

是从客户机传递到服务器上的一组完整的数据和SQL指令,存储过程/触发器都属于批处理.

3.SQL server变量

1)局部变量:作用域局限在一定范围内的Transact-SQL对象。
局部变量可在一个批处理(存储过程或触发器)中被声明或定义,
然后这个批处理内的SQL语句就可以设置这个变量的值,或者是引用这个变量已经赋予的值。
当批处理结束后,这个局部变量也就随之消亡。 
2)全局变量:全局变量用来记录SQL Server 服务器活动状态信息的一组数据。
    全局变量是SQL Server事先定义好,提供给用户使用的变量。
    全局变量是固定的,由系统提供的,用户不能参与定义,不能变动,只能拿来使用,对用户而言是只读的。

4.局部变量

1)声明局部变量 
DECLARE  @MyCounter  INT--声明一个整数类型变量,变量名为@ MyCounter
DECLARE  @LastName NVARCHAR (30),
             @Firstname NVARCHAR(20),
             @State  nvarchar(2)
    --可以在一个DECARE语句中声明多个变量
2)为局部变量赋值
使用select或set语句
(1)使用SELECT语句,为变量直接赋值
declare @MyCounter int
select @MyCounter=100
print @MyCounter
(2)使用SELECT将查询结果赋值给已经声明的变量赋值
declare @StockNo varchar(20)
SELECT @StockNO = 仓库号  
FROM 职工  
WHERE 职工号= 'E1'
print @stockNo
--如果查询出多个值,则最后一个值会赋给该变量
--下面,为在一条语句中为多个变量赋值
declare @SalaryMax int, @SalaryMin int
select @SalaryMax=max(工资),@SalaryMin=min(工资)
from 职工
print  @SalaryMAX
print  @SalaryMIN
(3)使用SET对变量直接赋值 
DECLARE @myvar char (20)
SET @myvar = 'This is a test'
--依次赋值多个变量
DECLARE    @myvarl char (20),
               @myvar2 char(20),
               @myvar3 char(20)
SET  @myvarl = 'This is a test'
SET  @myvar2 = 'This is a test'
SET  @myvar3 = 'This is a test'
(4)使用set将查询结果给已经声明的变量赋值
DECLARE @rows int
SET @rows =(SELECT COUNT (*) FROM  职工 )
print @rows
(5)应用已经赋值局部变量
DECLARE  @state  varchar(10)
SET @state = ‘兰州’
SELECT 仓库号, 城市
FROM 仓库 
WHERE 城市 = @state

4.全局变量(这里不再细化)
5.条件判断结构语句

(1)if...else条件判断与begin...end语句块
if (select avg(工资) from 职工 where 仓库号='WH1')<1000
begin
print 'wh1仓库里,平均工资低于1000'
end
else
if(select avg(工资) from 职工 where 仓库号='WH1')<2000
begin
print 'wh1仓库里,平均工资低于1000'
end
(2)while循环结构
while exists(select * from 职工 where 工资<1000)
begin 
update 职工 set 工资=工资*1.5 
declare @SalaryMax int
select @SalaryMax=max(工资) from 职工
if @SalaryMax>5000
break
else
continue
end
(3)WaitFor延时语句
WaitFor Delay '00:00:04' print 'hh'--Delay指定时间间隔为0分钟4秒后输出
WaitFor Time '14:30' --使用Time关键字等到下午2:30。 
(4)RETURN返回语句
在批处理、语句块或存储过程中,使用RETURN语句可以立即从当前所在的程序结构中退出,
位于RETURN语句后面的语句将不会被执行.
存储过程返回值为0时,表示调用成功,否则就是有问题发生。

6.游标

(1)游标的使用
有五个基本步骤:
声明游标;
打开游标;
从游标中重复提取(读取)行,有选择地修改或者删除所取的行;
关闭游标;
当不再需要游标时,释放游标。 
declare MyCur cursor
for
select 职工号,工资 from 职工 where 仓库号='WH1' --声明游标
for read only --只读游标
open MyCur --打开游标
declare @WorkNo nvarchar(5),@Salary int --声明变量,用来接收游标读出值
fetch next from MyCur into @WorkNo,@Salary --提取两行
while(@@Fetch_Status=0)
begin
print @WorkNo
print @Salary
fetch next from MyCur into @WorkNo,@Salary
end
close MyCur   --关闭游标
deallocate MyCur --释放游标
(2)使用游标取特定行
declare MyCur cursor
for
select * from 职工
for read only
open MyCur
fetch next from MyCur --取下一行
fetch first from MyCur --取第一行
fetch last from MyCur --取最后一行
fetch absolute 2 from MyCur --取第二行
fetch absolute -2 from MyCur --取倒数第二行
close MyCur
deallocate MyCur
(3)使用游标修改数据
只要游标声明时,没有带READ ONLY关键字的游标都是可修改游标。
declare @Salary int
declare MyCur cursor
for
select Salary from 职工
open MyCur
fetch next from MyCur into @Salary
while(@@Fetch_Status=0)
begin
if @salary<1000
update 职工 set 工资=工资*1.4 --进行数据修改
where current of MyCur --将当前行工资改变
fetch next from MyCur into @Salary
end
close MyCur
deallocate MyCur

7.存储过程

存储过程是事先编好的、存储在数据库中的程序,这些程序用来完成对数据库的指定操作。
8.创建存储过程
--在存储过程里,可以综合使用变量/条件判断结构语句/游标等
create proc/procedure procedure_name [;number]
[@parameter date_type[=default],...    ]
as
sql_statement
s    procedure_name:给出存储过程名;
s    number:对同名的存储过程指定一个序号;
s    @parameter:给出参数名;
s    data_type:指出参数的数据类型;
s    = default:给出参数的默认值;
s    sql_statement:存储过程所要执行的SQL语句,它可以是一组SQL语句,可以包含流程控制语句等。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值