存储过程 实例练习
一、简单存储过程
set ANSI_NULLS ON
--用于和NULL的比较,如:null=null在off时会返回 true,在on 时为false
--SET NOCOUNT { ON | OFF } 使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。
--SET XACT_ABORT on 如果事务中发生错误,on 则会终止整个事务的执行,如果OFF,继续错误的下面一句
set QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID ( 'SP_GetAdminRecord', 'P' ) IS NOT NULL
DROP PROCEDURE SP_GetAdminRecord;
GO
(1)--简单
CREATE PROCEDURE [dbo].[SP_GetAdminRecord]
AS
select adminname,tel from f_admin
GO
execute SP_GetAdminRecord;
(2)--带参数
CREATE PROCEDURE [dbo].[SP_GetAdminRecord]
@adminname nvarchar(20),
@tel nvarchar(50)
AS
select adminname,tel from f_admin
where adminname=@adminname AND tel=@tel
GO
execute SP_GetAdminRecord @adminname='a%',@tel='123123477777777';
--execute SP_GetAdminRecord N'admin',N'123123477777777';
(3)----使用带有通配符参数的简单过程
CREATE PROCEDURE dbo.SP_GetAdminRecord
@adminname nvarchar(50)= N'a%',
@tel nvarchar(70)=N'%'
AS
select adminname,tel from f_admin
where adminname LIKE @adminname
AND tel LIKE @tel
GO
--execute SP_GetAdminRecord N'a%';
--或者 execute SP_GetAdminRecord N'a%',N'_7%';
(4)--使用变量,output传递参数
IF OBJECT_ID ( 'insert_bank', 'P' ) IS NOT NULL
DROP PROCEDURE insert_bank;
GO
Create proc insert_bank
@name varchar(40),
@price float,
@count int,
@sumprice float output
--with encryption ---------加密
AS
insert into product ([name],price,[count],sumpirce) Values(@name,@price,@count,@sumprice)
GO
declare @total_price int
exec insert_bank 'Zhangsan',20,100,@total_price output
print '总余额为'+convert(varchar,@total_price)
go
ps:存储过程的3种传回值:
1.以Return传回整数
2.以output格式传回参数
3.Recordset
传回值的区别:
output和return都可在批次程式中用变量接收,而recordset则传回到执行批次的客户端中。

浙公网安备 33010602011771号