- set statistics io on
- set statistics time on
- set showplan_text on
- set nocount on
- /*创建一个不带参数的存储过程*/
- CREATE PROC STU_ALL
- AS
- SELECT * FROM STUDENT
- /*执行这个存储过程*/
- EXEC STU_ALL
- /*查看所执行存储过程的细节也就是所谓的存储过程是如何创建的*/
- EXEC sp_helptext STU_ALL
- /*找出选修了课程"数据结构"的所有学生的信息*/
- CREATE PROC STU_DS
- AS
- SELECT *
- FROM STUDENT
- WHERE SNO IN (SELECT SNO FROM SC WHERE CNO=(SELECT CNO FROM COURSE WHERE CNAME='数据结构'))
- EXEC STU_DS
- /*创建带参数的存储过程,格式如下:
- CREATE PROCEDURE 存储过程名
- 变更声明(变更名前加@)
- AS
- SQL 语句
- */
- /*output的用法:简单一点说就是带有output标识的参数在存储过程中的修改将被保存。
- 如果不带,那么当存储过程运行结束后,对参数的修改将消失。如果用编程语言来形容的话,
- 就是类似于值传递参数与地址传递参数一样的方式。这里要注意的是如果要设置output,形参和实参要同时设置(实参可以不写),否则会报以下错误
- 形参 "@SNO" 未声明为 OUTPUT 参数,但传递进来的实参请求输出。*/
- CREATE PROC STU_SNO(@SNO VARCHAR(10) output)--在写这个参数的时候必须要加括号,否则会报错:超出了存储过程、函数、触发器或视图的最大嵌套层数
- AS
- SELECT *
- FROM STUDENT
- WHERE SNO=@SNO
- --执行创建的存储过程
- declare @num varchar(10)
- set @num='990001'
- EXEC STU_SNO @num output--这个output可以不写
- --因为用到了output所以是有返回值的,返回值存储在@num中
- select @num--这里只能用select而不能用print,否则是打不出东西的
本文转自sucre03 51CTO博客,原文链接:http://blog.51cto.com/sucre/420257,如需转载请自行联系原作者