的约束
sp_helpindex 查看某个表的索引
sp_stored_procedure 列出当前环境中所有的存储过程
sp_password 添加或修改登录账户的密码
sp_helptext 显示默认值、未加密的存储过程、用户定义的存储过程、触发器或者视图的实际文本
sp_addrole 向当前数据库中创建新的数据角色
sp_adduser 向当前数据添加新的用户
sp_cmdshell 使用DOS命令操作文件和目录
sp_logevent 将用户定义的消息记入SQL Server日志文件盒Windows事件查看器
用户自定义的存储过程
语法:
CREATE PROC[EDURE] proc_name
[{@parameter_name data_type}=[默认值]] [OUTPUT,..,n]
AS
procedure_body
语法说明:PROCEDURE可以省略为PROC,proc_name指存储过程名称,存储过程名称后面是
参数列表,为可选项。如果有参数,则需要指定参数的数据类型;如果有默认值,则需要
指定参数的默认值。也可以为参数指定OUTPUT关键字,表示参数为传出参数。AS关键字
后面的procedure_body表示存储过程的主体是存储过程的核心。
1、创建不带参数的存储过程
USE Bank
GO
if exists(select * from sysobjects where name='proc_min_balance')
drop procedure proc_min_balance
GO
create proc_min_balance
AS
select ACCOUNT_NAME from ACCOUNT where ACCOUNT_ID=
(
select top 1 ACCOUNT_ID from ALL_PURPOSE_CARD order by BALANCE
)
GO
调用存储过程通过EXEC或EXECUTE命令执行
USE Bank
GO
exec proc_min_balance
2、带输入参数的存储过程
在其他语言中,如果方法有参数,则在调用时需要传递实际参数值。
--创建带参数的存储过程,依据传入的数据添加账户信息
USE Bank
GO
if exists(select * from sysobjects where name='proc_Account_Insert')
drop procedure proc_Account_Insert
GO
create proc proc_Account_Insert
@Account_Name varchar(20),
@code varchar(18),
@open_time datetime
AS
insert into ACCOUNT values(@Account_Name,@code,@open_time)
if(@@ERROR=0)
print 'ok'
else
print 'error'
GO
执行带参数的存储过程,需要将实际参数值传入存储过程中
exec proc_Account_Insert '诸葛亮','546646265656651','2011-01-02'
带输出参数的存储过程
如果需要存储过程返回一个值或多个值,可以使用输出参数。输出参数必须在存储过程定义
时使用OUTPUT关键字进行声明
提示:存储过程也可以通过RETURN返回值,但通常只会返回一些执行状态值。
示例如下:
USE Bank
GO
if exists(select * from sysobjects where name='proc_getDay')
drop procedure proc_getDay
GO
create proc proc_getDay
@day int output,--输出参数,返回天数
@date datetime
AS
select @day=datediff(day,@date,CETDATE())
GO
在调用带传出函数的存储过程是,需要首先定义对应的变量作为实际参数,并且必须
在实际参数后使用OUTPUT关键字。执行存储过程成功后,就可以通过变量得到存储
过程传出的参数值。
--先定义变量,与传出参数类型保持一致
declare @day int
--执行存储过程时,将变量作为实际参数,并使用OUTPUT关键字进行说明
exec proc_getDay @day output, '2012-01-03'
--执行完毕后,通过变量得到存储过程传出的值
print '距当前天数:'+cast(@day as varchar(4))
GO