SQLSERVER 中的存储过程
SQLSERVER 中的存储过程
Transact-SQL中的存储过程,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。
这样就可以提高存储过程的性能。存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。
存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。
由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。同时由于在调用时只需用提供存储过程名和必要的参数信
息,所以在一定程度上也可以减少网络流量、简单网络负担。
存储过程的优点:
1.存储过程允许标准组件式编程
2.存储过程能够实现较快的执行速度
3. 存储过程减轻网络流量
4. 存储过程可被作为一种安全机制来充分利用
常用系统存储过程
--常用系统存储过程呢; EXEC sp_databases --查看系统中所有的数据库 EXEC sp_tables --查看当前数据库中表 EXEC sp_columns 'INFO' --查看某个表(info) 中列的情况 EXEC sp_helpindex 'INFO' --表中索引 EXEC sp_helpconstraint 'INFO' --表中约束 EXEC sp_stored_procedures --存储过程 EXEC sp_helptext '' --查看存储过程 或 函数 游标 触发器 的定义语句 EXEC sp_rename 'STUDENT.NAME','STUNAME' --修改字段,表,索引名 /*
SP_HELPINDEX 'INFO'
SP_RENAME 'INFO.CLU_ID','INFO_CLU_ID','INDEX'
*/ EXEC SP_RENAMEDB 'TEST','NEW_TEST' --修改数据库名称 EXEC sp_helpdb TEST --查看数据库的一些信息
基本语法格式:
--SQL Server Stored Procedure Syntax CREATE { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ] [ { @parameter [ type_schema_name. ] data_type } [ VARYING ] [ = default ] [ OUT | OUTPUT | [READONLY] ] [ ,...n ] [ WITH <procedure_option> [ ,...n ] ] [ FOR REPLICATION ] AS { [ BEGIN ] sql_statement [;] [ ...n ] [ END ] } [;] <procedure_option> ::= [ ENCRYPTION ] [ RECOMPILE ] [ EXECUTE AS Clause ]
--WITH RECOMPILE 不缓存
--
--加密WITH ENCRYPTION
存储过程的返回值(return 和 output)
如果是select语句,则返回结果集,如果使用return 那么只能返回int 类型数据
用输出参数output可以输出任意类型的结果(不包括表类型),而return只能返回整型并且总能返回一个整型值。一般的return用来终止存储过程的进行并返回。
普通存储过程
CREATE PROC PROC_GETINFO AS BEGIN SELECT * FROM INFO END
带输入参数存储过程
CREATE PROC PROC_GETINFO( @ID INT ) AS BEGIN SELECT * FROM INFO WHERE ID=@ID END --调用: PROC_GETINFO 2
带输出参数存储过程
CREATE PROC PROC_GETINFO( @ID INT, @CONTENT VARCHAR(100) OUT --OUT 表示输出 --OUTPUT 表示输入输出 ) AS BEGIN SELECT @CONTENT=CONTENT FROM INFO WHERE ID=@ID END --调用: DECLARE @RESULT VARCHAR(100) EXEC PROC_GETINFO 2,@RESULT OUT PRINT @RESULT
ADO.NET 调用带输出参数的存储过程