存储过程的创建和执行:
CREATE PROCEDURE [insert_members_1]
(@id_1 [tinyint],
@name_2 [char](10),
@password_3 [varchar](50),
@sex_4 [char](6),
@birth_5 [datetime],
@salary_7 [money])
AS INSERT INTO [myguest].[dbo].[members]
( [id],
[name],
[password],
[sex],
[birth],
[salary])
VALUES
( @id_1,
@name_2,
@password_3,
@sex_4,
@birth_5,
@salary_7)
GO
execute insert_members_1 1,'bitan','aaaaaaa','male','19200202',$3200.20
结果:
表members将新增一条记录。
存储过程的另一个例子:
/*create procedure update_members_id
(
@id int,
@name varchar(20)
)
as update members set name=@name where id=@id */
execute update_members_id 3,'susan';
select * from members;
结果:
3susan aaaaamale 1979-01-09 00:00:00.0000x00000000000001A95000.0000
存储过程的创建和执行:
CREATE PROCEDURE [insert_members_1]
(@id_1 [tinyint],
@name_2 [char](10),
@password_3 [varchar](50),
@sex_4 [char](6),
@birth_5 [datetime],
@salary_7 [money])
AS INSERT INTO [myguest].[dbo].[members]
( [id],
[name],
[password],
[sex],
[birth],
[salary])
VALUES
( @id_1,
@name_2,
@password_3,
@sex_4,
@birth_5,
@salary_7)
GO
execute insert_members_1 1,'bitan','aaaaaaa','male','19200202',$3200.20
结果:
表members将新增一条记录。
存储过程的另一个例子:
/*create procedure update_members_id
(
@id int,
@name varchar(20)
)
as update members set name=@name where id=@id */
execute update_members_id 3,'susan';
select * from members;
结果:
3susan aaaaamale 1979-01-09 00:00:00.0000x00000000000001A95000.0000
create procedure select_members_by_id @id int
as
select * from members where id=@id;
execute select_members_by_id 3
在存储过程中使用子查询:
create procedure multi_operation_members @id int
as
select * from members where id < (select count(*) from members)
execute multi_operation_members 30
在存储过程中修改参数值,使用多个查询语句:
create procedure multi_operation_members_2 @id int
as
select @id = (select count(*) from members where id > @id)
select @id = @id - 2
select * from members where id = @id
execute multi_operation_members_2 3
在存储过程中使用while循环,使用多个查询语句:
create procedure while_circle_members @id int
as
declare @in int //定义临时变量
select @in = 0 //给临时变量赋初始值
while @in < @id //设定循环条件
begin
select @in = @in + 1 //临时变量增一
select * from members
delete from members where id = @in
end
execute while_circle_members 10
在存储过程中调用另一个存储过程
create procedure procedure_1 @str varchar(20)
as
select 'execute procedure_1' as message, @str as name;
go
create procedure procedure_2 @str varchar(20)
as
select 'begin procedure_2' as message, @str as name
execute procedure_1 @str
select 'end procedure_2' as message, @str as name
go
execute procedure_2 'bitan'
结果:
message name
----------------- --------------------
begin procedure_2 bitan
(所影响的行数为 1 行)
message name
------------------- --------------------
execute procedure_1 bitan
(所影响的行数为 1 行)
message name
--------------- --------------------
end procedure_2 bitan
(所影响的行数为 1 行)
在系统表中查看已经创建的存储过程:
/*create proc my_proc_2
as
print 'This is my_proc_2'
return*/
select convert(char(10),so.name) 'name', convert(char(60),sc.text) 'text', convert(char(30),so.crdate) 'crdate' from sysobjects so, syscomments sc where so.id = sc.id and so.name = 'my_proc_2'
结果:
name text crdate
---------- ------------------------------------------------------------ ------------------------------
my_proc_2 create proc my_proc_2
as
print 'This is my_proc_2'
return 03 15 2005 9:53AM
(所影响的行数为 1 行)
使用输入参数与输出参数:
create proc my_proc_4
(@i int, @j int, @z int output)
as
select @z = @i + @j
print 'my_proc_4: ' + rtrim(convert(char,@i)) +
' + ' + rtrim(convert(char,@j)) +
' = ' + rtrim(convert(char,@z))
return
declare @sum int
execute my_proc_4 1,2,@sum output
print 'result: ' + rtrim(convert(char,@sum))
execute my_proc_4 @j=4, @i=-10, @z=@sum output
print 'result: ' + rtrim(convert(char,@sum))
结果:
my_proc_4: 1 + 2 = 3
result: 3
my_proc_4: -10 + 4 = -6
result: -6
给输入参数设置缺省值:
create proc my_proc_5
(@i int = 5, @j int = 6, @z int output)
as
select @z = @i + @j
print 'my_proc_5: ' + rtrim(convert(char,@i)) +
' + ' + rtrim(convert(char,@j)) +
' = ' + rtrim(convert(char,@z))
return
declare @sum int
exec my_proc_5 @z = @sum output
print 'result: ' + rtrim(convert(char,@sum))
exec my_proc_5 @i = -10, @z = @sum output
print 'result: ' + rtrim(convert(char,@sum))
exec my_proc_5 @i = -5, @j = -10, @z = @sum output
print 'result: ' + rtrim(convert(char,@sum))
exec my_proc_5 default, default, @z = @sum output
print 'result: ' + rtrim(convert(char,@sum))
exec my_proc_5 @j = -15, @i = default, @z = @sum output
print 'result: ' + rtrim(convert(char,@sum))
结果:
my_proc_5: 5 + 6 = 11
result: 11
my_proc_5: -10 + 6 = -4
result: -4
my_proc_5: -5 + -10 = -15
result: -15
my_proc_5: 5 + 6 = 11
result: 11
my_proc_5: 5 + -15 = -10
result: -10
利用缺省值进行参数检查:
alter proc my_proc_6
(@i int = 0)
as
declare @s char
if @i = 0
begin
print 'Occur a error: ' + convert(char, @i)
end
else
begin
select @s = convert(char, @i * 100)
print 'result: ' + @s
end
return
exec my_proc_6 default
exec my_proc_6
exec my_proc_6 5
结果:
Occur a error: 0
Occur a error: 0
result: 5
捕获返回状态值:
alter proc my_proc_7
(@s char(5) = 'bitan')
as
if @s is null //注意:当使用@s = null时,下面的 print 'param: null' 语句将不会显示结果。
begin
print 'param: null '
return -2
end
if @s != 'bitan'
begin
print 'param: ' + @s
return -1
end
print 'param: ' + @s
return //注意:没有显式给出返回值,系统默认返回0。
declare @i int
exec @i = my_proc_7
print 'state: ' + convert(char, @i)
exec @i = my_proc_7 null
print 'state: ' + convert(char, @i)
exec @i = my_proc_7 @s = null
print 'state: ' + convert(char, @i)
exec @i = my_proc_7 'aaaaaaaaaaaaaaaaa'
print 'state: ' + convert(char, @i)
结果:
param: bitan
state: 0
param: null
state: -2
param: null
state: -2
param: aaaaa
state: -1
分享到:
相关推荐
在SQL Server数据库管理系统中,存储过程和触发器是两种非常重要的数据库编程元素,它们对于数据库设计和数据管理具有深远的影响。下面将详细讲解这两个概念及其相关的知识点。 **SQL存储过程**: 1. **定义**:SQL...
里面建了十个存储过程,供初学者参考,很有价值
本压缩包文件"sql server 2000 试题汇编答案"显然是针对SQL Server 2000的练习题集及解答,旨在帮助学习者提升对SQL Server 2000的理解和操作技能。以下将详细探讨SQL Server 2000的相关知识点: 1. **SQL Server ...
《SQL Server 2000数据库练习集》是针对初学者和进阶者设计的一份实践教程,旨在通过丰富的文字解析和直观的图片展示,帮助读者深入理解和掌握SQL Server 2000的核心功能和操作技巧。这个练习集涵盖了数据库的基础...
学习SQL Server 2000,你需要理解数据库的概念,包括表、索引、视图和存储过程等基本元素。在实际操作中,你将学习如何创建和修改数据库结构,执行数据插入、更新和删除操作,以及使用T-SQL(Transact-SQL,SQL ...
SQL Server 2000是微软公司推出的一款关系型数据库管理系统,它在IT领域中扮演着重要的角色,尤其是在数据存储、管理和分析方面。本题目汇编聚焦于SQL Server 2000的基础知识,旨在帮助学习者巩固和提升对这个系统的...
在SQL Server 2000中,可以创建一个名为`DeleteAuthor`的存储过程: ```sql CREATE PROCEDURE DeleteAuthor @authorID INT AS BEGIN DELETE FROM Authors WHERE AuthorID = @authorID END ``` 然后,当需要删除...
学习T-SQL的基本语法,如SELECT、INSERT、UPDATE、DELETE语句,以及存储过程、触发器等高级特性,是掌握SQL Server 2000的关键。 六、视图与游标 视图是虚拟表,基于一个或多个表的查询结果。游标则允许逐行处理...
SQL Server 2000概述、SQL Server 2000安装和配置、SQL Server 2000工具、数据库系统基础、SQL Server 2000数据类型、SQL ...存储过程、SQL Server 2000数据库的安全性管理、数据库的备份和恢复、基于Web的数据库应用...
在探讨SQL Server存储过程的相关知识点之前,首先需要明确存储过程的定义。存储过程是一组为了完成特定功能的SQL语句集合,它可以接受输入参数并可返回输出参数,还可以包含逻辑控制流程,比如条件判断、循环、分支...
在本教程中,我们将深入探讨SQL Server 2000的程序设计,包括如何使用SQL进行数据库的创建、查询、更新和删除等基本操作,以及更高级的概念如存储过程、触发器和视图。 首先,让我们从数据库的创建开始。在SQL ...
通过实践,你可以熟悉SQL Server 2000的T-SQL语言,了解索引的创建与优化,学习如何设计有效的数据结构,以及掌握如何利用视图、存储过程和触发器来提高数据库的效率和安全性。 总结一下,"SQL Server 2000 Sample ...
SQL Server是微软公司推出的一款关系型数据库管理系统,广泛应用于企业数据存储、数据分析和业务处理等领域。为了提升在SQL Server中的技能,掌握好SQL语言至关重要。本文将针对"战胜SQL Server必做练习50题"这一...
SQL Server 2000还支持存储过程和触发器,它们是预编译的SQL代码块,可以提高性能并增强数据库的逻辑控制。视图提供了一种虚拟表的视角,可以隐藏数据复杂性,简化查询。索引是提高查询速度的关键,理解何时何地创建...
SQL Server 2000是微软公司推出的数据库平台,它提供了高效的数据存储、检索和分析能力,广泛应用于企业级的信息系统开发和管理。在本教程中,我们将首先介绍SQL Server 2000的基本架构,包括服务器组件、客户端工具...
在SQL Server 2000的环境中,学习者将掌握一系列关键概念和技术,包括数据库架构设计、数据存储与检索、安全性管理、备份与恢复策略以及性能优化。 1. **SQL基础**:SQL(Structured Query Language)是用于管理和...
这个“SQL Server 2000试题汇编源数据库”很可能是为了帮助用户准备SQL Server 2000相关的资格认证考试或者提升数据库管理技能而设计的一系列练习题目和答案。 SQL(Structured Query Language)是用于管理和处理...
1.4 SQL Server 2000的新特性 1.4.1 改进了对Web的支持 1.4.2 改进了伸缩能力和可靠性 1.4.3 改进了开发和管理环境 1.5 样本数据库 1.5.1 样本数据库安装 1.5.2 样本数据库的设计目的和设计思想 1.5.3 数据库图解 ...
SQL Server 2000在当时是企业级数据存储和管理的重要工具,它的功能强大,包括数据查询、报表生成、数据仓库以及安全性管理等多个方面。 本教程可能涵盖了以下关键知识点: 1. **SQL基础**:SQL(Structured Query...
在SQL Server的学习过程中,实践是提升技能的关键。"SQL Server练习50题"是一个非常实用的资源,旨在帮助用户巩固SQL Server的基础知识,特别是查询和多表查询这两方面的重要技能。下面将对这两个主题进行详细讲解。...