存储过程
6.1. 创建无参数存储过程
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'au_info_all' AND type = 'P')
DROP PROCEDURE au_info_all –判断如果存在XXX过程就删除
CREATE PROCEDURE au_info_all –创建存储过程
AS
SELECT pub_name FROM authors
SQLSERVER 调用方法:
EXECUTE au_info_all/ EXEC au_info_all
ORACLE 调用方法:
6.2. 创建有参数存储过程
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'au_info' AND type = 'P')
DROP PROCEDURE au_info
CREATE PROCEDURE au_info
@lastname varchar(40),
@firstname varchar(20)
AS
SELECT au_lname, au_fname, title, pub_name
FROM authors
WHERE au_fname = @firstname
AND au_lname = @lastname
SQLSERVER 调用方法:
EXECUTE au_info 'Dull', 'Ann'
EXECUTE au_info @lastname = 'Dull', @firstname = 'Ann'
6.3. 创建有通配符参数存储过程
从四个表的联接中只返回指定的作者(提供了姓名)、出版的书籍以及出版社。该存储过程对传递的参数进行模式匹配,如果没有提供参数,则使用预设的默认值.
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'au_info2' AND type = 'P')
DROP PROCEDURE au_info2
CREATE PROCEDURE au_info2
@lastname varchar(30) = 'D%',
@firstname varchar(18) = '%'
AS
SELECT au_lname, au_fname, title, pub_name
FROM authors
WHERE au_fname LIKE @firstname
AND au_lname LIKE @lastname
SQLSERVER 调用方法:
EXECUTE au_info2
EXECUTE au_info2 'Wh%'
EXECUTE au_info2 @firstname = 'A%'
EXECUTE au_info2 'Hunter', 'Sheryl'
EXECUTE au_info2 'H%', 'S%'
6.4. 创建有Output参数存储过程
IF EXISTS(SELECT name FROM sysobjects
WHERE name = 'titles_sum' AND type = 'P')
DROP PROCEDURE titles_sum
CREATE PROCEDURE
titles_sum
@@TITLE varchar(40) = '%',
@@SUM money OUTPUT
AS
SELECT 'Title Name' = title
FROM titles
WHERE title LIKE @@TITLE
SELECT @@SUM = SUM(price)
FROM titles WHERE title LIKE @@TITLE
SQLSERVER 调用方法:
DECLARE @@TOTALCOST money
EXECUTE titles_sum 'The%', @@TOTALCOST OUTPUT
IF @@TOTALCOST < 200
BEGIN
PRINT 'All of these titles can be purchased for less than $200.'
END
ELSE
SELECT 'The total cost of these titles is $' + RTRIM(CAST(@@TOTALCOST AS varchar(20)))
6.5. 创建有Output游标参数存储过程
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'titles_cursor' and type = 'P')
DROP PROCEDURE titles_cursor
CREATE PROCEDURE titles_cursor @titles_cursor CURSOR VARYING OUTPUT
AS
SET @titles_cursor = CURSOR
FORWARD_ONLY STATIC FOR
SELECT *
FROM titles
OPEN @titles_cursor
SQLSERVER 调用方法:
DECLARE @MyCursor CURSOR
EXEC titles_cursor @titles_cursor = @MyCursor OUTPUT
WHILE (@@FETCH_STATUS = 0)
BEGIN
FETCH NEXT FROM @MyCursor
END
CLOSE @MyCursor
DEALLOCATE @MyCursor
6.6. 创建有WITH RECOMPILE存储过程
当每次调用存储过程时都重新编译存储过程,目前尚未发现这个参数的用处
CREATE PROCEDURE titles_by_author
@@LNAME_PATTERN varchar(30) = '%'
WITH RECOMPILE
AS
SELECT RTRIM(au_fname) + ' ' + RTRIM(au_lname) AS 'Authors full name',
title AS Title
FROM authors a INNER JOIN titleauthor ta
ON a.au_id = ta.au_id INNER JOIN titles t
ON ta.title_id = t.title_id
WHERE au_lname LIKE @@LNAME_PATTERN
6.7. 创建有WITH ENCRYPTION存储过程
对存储过程进行加密,用于隐藏存储过程的文本,有编程私心的很重要噢!
CREATE PROCEDURE encrypt_this
WITH ENCRYPTION
AS SELECT * FROM authors
6.8. 调用用户定义的系统存储过程
6.9. 删除存储过程
DROP PROCEDURE procecureName
6.10. 在SQL中存储过程的调用
? 无参数存储过程调用
EXECUTE au_info_all
? 有参数存储过程调用
EXECUTE au_info 'Dull', 'Ann'
EXECUTE au_info @lastname = 'Dull', @firstname = 'Ann'
? 通配符存储过程调用
EXECUTE au_info2
EXECUTE au_info2 'Wh%'
EXECUTE au_info2 @firstname = 'A%'
EXECUTE au_info2 'Hunter', 'Sheryl'
EXECUTE au_info2 'H%', 'S%'
? Output参数存储过程调用
DECLARE @@TOTALCOST money
EXECUTE titles_sum 'The%', @@TOTALCOST OUTPUT
IF @@TOTALCOST < 200
BEGIN
PRINT ' '
END
ELSE
SELECT 'The total cost of these titles is $' + RTRIM(CAST(@@TOTALCOST AS varchar(20)))
? Output游标参数存储过程调用
DECLARE @MyCursor CURSOR
EXEC titles_cursor @titles_cursor = @MyCursor OUTPUT
WHILE (@@FETCH_STATUS = 0)
BEGIN
FETCH NEXT FROM @MyCursor
END
CLOSE @MyCursor
DEALLOCATE @MyCursor
分享到:
相关推荐
sql server2008轻松编写t-sql存储过程sql server2008轻松编写t-sql存储过程
T-sql编程存储过程T-sql编程存储过程T-sql编程存储过程T-sql编程存储过程T-sql编程存储过程
存储过程教学资料(含无输入参数、输入参数、输出参数等存储过程教学实例)方便练习!
SQL Server 2005在支持标准SQL语言的同时,对其进行了扩充,引入了T-SQL,即Transact-SQL,T-SQL是使用SQL Server 2005的核心,通过它,可以定义变量、使用流控制语句、自定义函数、自定义存储过程等,极大地扩展了...
exec --专门用来调用存储过程 exec sp_grantlogin '域名\用户名' --创建window用户 sp_grantdbaccess '登录账户名','数据库用户' --grant授权 访问数据库 grant 权限[on 表名] to 数据库用户 --为用户授权 USE ...
T-Sql 编程 触发器 游标 储存过程 函数 T-Sql 编程 触发器 游标 储存过程 函数
SqlServer脚本语言入门(t-sql),包含最基本的建库,建表,建约束等简单语法.还包括事务,存储过程以及触发器等基本语法. 适合初学者编程时使用!
本书涵盖了T-SQL程序设计的方方面面,如基于集合的编程技术、日期和时间相关的XML和CLR数据类型的使用、临时对象、T-SQL和CLR用户自定义函数、存储过程、触发器、事务和新的错误处理结构、应用并发模型支持并发用户...
可以给初学T-SQL的学员来学习学习,里面有代码和一个TXT文档,里面是一些简介
T-sql基本语法示例 1.建库建表,建约束 2.查询 3.视图 4.存储过程 5.触发器
非常好的一本详细讲解数据库的书,数据库 T-SQL 存储过程 SQL语法大全 应有尽有
SQL Server2000设计与T-SQL编程电子书籍,对学习ms sql 与存储过程代码编写是一本很不错大书
可快速索引到要学的T-SQL语句,查询方便,里面有常用的操作表,存储过程,事务,触发器等常用操作
T-SQL语法 一、数据库存储结构 二、数据库表存储结构 三、约 束 四、规 则 五、默认 六、索 引 七、视图 八、触发器 九、select,delete,update,insert语句使用方法 十、函数数据整理 十一、游标 十二、存储过程
这是本人精心收集的17套SQL试题,其中有对应答案!希望对您有用!
其中包括事务,存储过程,函数,触发器的大量使用,很能复习T-SQL的不足和欠缺,还包括通过数据库级在电脑硬盘上新建文件夹等功能
实验九T-SQL编程、存储过程、游标.docx
SQL 2005 中触发器、事务,存储过程、视图_T-SQL语句的详细讲解课程学习PPT(含有实例和作业题)
实验六使用T-SQL编写存储过程访问数据库
T-SQL破解加密的存储过程 适用于SQL2000和SQL2005的加密储存过程,