资源描述:
《SQL存储过程全面实例讲解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、SQL实例讲解一、创建存储过程结构CREATE PROCEDURE创建存储过程,存储过程是保存起来的可以接受和返回用户提供的参数的 Transact-SQL 语句的集合。可以创建一个过程供永久使用,或在一个会话中临时 使用(局部临时过程),或在所有会话中临时使用(全局临时过程)。也可以创建 在 Microsoft SQL Server启动时自动运行的存储过程。语法CREATE PROC [ EDURE ] procedure_name [ ; number ] [ { @parameter data_type } [ VARYI
2、NG ] [ = default ] [ OUTPUT ] ] [ ,...n ] [ WITH { RECOMPILE
3、 ENCRYPTION
4、 RECOMPILE , ENCRYPTION } ] [ FOR REPLICATION ] AS sql_statement [ ...n ] 二、存储过程实例讲解1. 使用带有复杂 SELECT 语句的简单过程下面的存储过程从四个表的联接中返回所有作者(提供了姓名)、出版的书籍以及 出版社。该存储过程不使用任何参数。USE pubsIF EXISTS (SELECT name FROM
5、 sysobjects WHERE name = 'au_info_all' AND type = 'P') DROP PROCEDURE au_info_allGOCREATE PROCEDURE au_info_allASSELECT au_lname, au_fname, title, pub_name FROM authors a INNER JOIN titleauthor ta ON a.au_id = ta.au_id INNER JOIN titles t ON t.title_id =
6、ta.title_id INNER JOIN publishers p ON t.pub_id = p.pub_idGOau_info_all 存储过程可以通过以下方法执行:EXECUTE au_info_all-- OrEXEC au_info_all如果该过程是批处理中的第一条语句,则可使用:au_info_all2. 使用带有参数的简单过程下面的存储过程从四个表的联接中只返回指定的作者(提供了姓名)、出版的书籍 以及出版社。该存储过程接受与传递的参数精确匹配的值。USE pubsIF EXISTS (SELECT name FROM
7、sysobjects WHERE name = 'au_info' AND type = 'P') DROP PROCEDURE au_infoGOUSE pubsGOCREATE PROCEDURE au_info @lastname varchar(40), @firstname varchar(20) AS SELECT au_lname, au_fname, title, pub_name FROM authors a INNER JOIN titleauthor ta ON a.au_id =
8、 ta.au_id INNER JOIN titles t ON t.title_id = ta.title_id INNER JOIN publishers p ON t.pub_id = p.pub_id WHERE au_fname = @firstname AND au_lname = @lastnameGOau_info 存储过程可以通过以下方法执行:EXECUTE au_info 'Dull', 'Ann'-- OrEXECUTE au_info @lastname = 'Dull', @firstna
9、me = 'Ann'-- OrEXECUTE au_info @firstname = 'Ann', @lastname = 'Dull'-- OrEXEC au_info 'Dull', 'Ann'-- OrEXEC au_info @lastname = 'Dull', @firstname = 'Ann'-- OrEXEC au_info @firstname = 'Ann', @lastname = 'Dull'如果该过程是批处理中的第一条语句,则可使用:au_info 'Dull', 'Ann'-- Orau_info @lastname
10、= 'Dull', @firstname = 'Ann'-- Orau_info @firstname =