(完整版)SQLSERVER存储过程大总结

合集下载

SqlServer存储过程和函数浅谈

SqlServer存储过程和函数浅谈

SqlServer存储过程和函数浅谈今天给⼤家总结⼀下sql server中的存储过程和函数。

本⼈是⼩⽩,⾥⾯内容⽐较初级,⼤神不喜勿喷⾃⾏飘过就是。

⾸先给⼤家简单列出sql server中的流控制语句,后⾯会⽤到的^_^sql server常⽤控制语句1.begin..end语句:该语句⽤来定义⼀串由顺序执⾏的SQL语句构成的块。

beginstatement blockend2.if....else语句:该语句⽤来定义有条件执⾏的某些语句。

if boolen_expressionstatement[else [if boolean_expression] statement]⽰例:查询学号为9704学⽣的成绩状况if ( select min (mark) from student where sno='9704') >90print' 学⽣成绩全部优秀 'elseif ( select min (mark) from student where sno='9704') >60print' 学⽣成绩全部及格 'elseprint' 学⽣成绩全部及格 'View Code3.while、break和continue语句:写过程序的同学相⽐对这个并不陌⽣,直接上代码⽰例:学号为9705学⽣的平均成绩如果⼩于75,则将该学⽣的每门成绩以5%的⽐例提⾼,当平均成绩⼤于等于75或者所有课程都及格时,终⽌操作。

while(select avg( mark) from student) <75beginupdate studentset mark= mark*1.05if(select min( mark) from student) >=60breakendView Code4.declare语句:⽤来定义⼀个局部变量,可⽤select语句为该变量赋初值。

sqlserver存储过程实例详解

sqlserver存储过程实例详解

SQL Server存储过程实例详解一、背景介绍存储过程是S QL Se rv e r中一种非常重要的数据库对象,它是一组预编译的SQ L语句集合,可以被存储在数据库中并被反复调用。

本文将详细介绍SQ LS er ve r存储过程的概念、用途以及如何创建和调用存储过程。

二、概念解析1.什么是存储过程?存储过程是一组S QL语句的集合,经过编译并存储在数据库中,以便被反复执行和调用。

它可以接受参数,并且可以返回结果集。

2.存储过程的优势有哪些?-提高数据库性能:存储过程可以预编译,加快SQ L语句的执行速度。

-提高数据安全性:将敏感的数据库操作封装在存储过程中,只对外暴露存储过程的接口,提高数据的安全性。

-提高开发效率:存储过程可以被反复调用,在多个应用程序中共享和复用。

3.存储过程的语法结构存储过程的语法结构如下所示:C R EA TE PR OC ED UR Epr o ce du re_n am e[@pa ra me te r1da tat y pe[=de fa ul t_val u e][O UT|O UT PU T]][@pa ra me te r2da tat y pe[=de fa ul t_val u e][O UT|O UT PU T]]...A SB E GI N--存储过程的执行逻辑E N D三、创建存储过程在SQ LS er ve r中,创建存储过程需要使用`CR EA TE P RO CED U RE`语句,下面是一个创建存储过程的示例:C R EA TE PR OC ED UR EGe t Em pl oy ee Co un tA SB E GI NS E LE CT CO UN T(*)ASE m pl oy ee Co un tF R OM Em pl oy ee sE N D四、调用存储过程调用存储过程可以使用`EX EC UT E`语句或者直接使用存储过程名称,下面是两种调用存储过程的示例:1.使用`E XE CU TE`语句调用存储过程:E X EC UT EG et Em pl oye e Co un t2.直接使用存储过程名称调用存储过程:G e tE mp lo ye eC ou nt五、存储过程参数存储过程可以接受输入参数和输出参数,下面是一个接受输入参数的存储过程示例:C R EA TE PR OC ED UR EGe t Em pl oy ee By Na me@n am eN VA RC HA R(50)A SB E GI NS E LE CT*F R OM Em pl oy ee sW H ER EE mp lo ye eN ame=@n am eE N D调用带有输入参数的存储过程时,需要传入参数的值,示例代码如下:E X EC UT EG et Em pl oye e By Na me@n am e='Jo h nS mi th'六、控制流程和逻辑处理存储过程可以包含控制流程和逻辑处理,例如条件判断、循环和异常处理,下面是一个带有I F条件判断的存储过程示例:C R EA TE PR OC ED UR EGe t Em pl oy ee By Sa lar y@s al ar yF LO ATA SB E GI NI F@s al ar y>5000B E GI NS E LE CT*F R OM Em pl oy ee sW H ER ES al ar y>@s ala r yE N DE L SEB E GI NS E LE CT*F R OM Em pl oy ee sW H ER ES al ar y<=@sal a ryE N DE N D七、常见问题和注意事项1.存储过程应该经过充分的测试和性能优化,以确保其高效运行。

SQLServer存储过程返回值总结

SQLServer存储过程返回值总结

SQLServer存储过程返回值总结1. 存储过程没有返回值的情况(即存储过程语句中没有return之类的语句)用方法 int count = ExecuteNonQuery(..)执行存储过程其返回值只有两种情况(1)假如通过查询分析器执行该存储过程,在显示栏中假如有影响的行数,则影响几行count就是几(2)假如通过查询分析器执行该存储过程,在显示栏中假如显示'命令已成功完成。

'则count = -1;在显示栏中假如有查询结果,则count = -1总结:A.ExecuteNonQuery()该方法只返回影响的行数,假如没有影响行数,则该方法的返回值只能是-1,不会为0。

B.不论ExecuteNonQuery()方法是按照CommandType.StoredProcedure或者CommandType.Text执行,其效果和A一样。

---------------------------------------------------------------------------------------------------------------------------------------------------2. 获得存储过程的返回值--通过查询分析器获得(1)不带任何参数的存储过程(存储过程语句中含有return)---创建存储过程CREATE PROCEDURE testReturnASreturn 145GO---执行存储过程DECLARE @RC intexec @RC=testReturnselect @RC---说明查询结果为145(2)带输入参数的存储过程(存储过程语句中含有return)---创建存储过程create procedure sp_add_table1@in_name varchar(100),@in_addr varchar(100),@in_tel varchar(100)asif(@in_name = '' or @in_name is null)return 1elsebegininsert into table1(name,addr,tel) values(@in_name,@in_addr,@in_tel)return 0end---执行存储过程<1>执行下列,返回1declare @count int exec @count = sp_add_table1 '','中三路','123456' select @count<2>执行下列,返回0declare @count int exec @count = sp_add_table1 '','中三路','123456' select @count---说明查询结果不是0就是1(3)带输出参数的存储过程(存储过程中可以有return可以没有return)例子A:---创建存储过程create procedure sp_output@output int outputasset @output = 121return 1---执行存储过程<1>执行下列,返回121declare @out intexec sp_output @out outputselect @out<2>执行下列,返回1declare @out intdeclare @count intexec @count = sp_output @out outputselect @count---说明有return,只要查询输出参数,则查询结果为输出参数在存储过程中最后变成的值;只要不查询输出参数,则查询结果为return返回的值例子B:---创建存储过程create procedure sp_output@output int outputasset @output = 121---执行存储过程<1>执行下列,返回121declare @out intexec sp_output @out outputselect @out<2>执行下列,返回0declare @out intdeclare @count intexec @count = sp_output @out outputselect @count---说明没有return,只要查询输出参数,则查询结果为输出参数在存储过程中最后变成的值;只要不查询输出参数,则查询结果为0总结:(1)存储过程共分为3类:A.返回记录集的存储过程---------------------------其执行结果是一个记录集,例如:从数据库中检索出符合某一个或几个条件的记录B.返回数值的存储过程(也可以称为标量存储过程)-----其执行完以后返回一个值,例如:在数据库中执行一个有返回值的函数或命令C.行为存储过程-----------------------------------用来实现数据库的某个功能,而没有返回值,例如:在数据库中的更新和删除操作(2)含有return的存储过程其返回值为return返回的那个值(3)没有return的存储过程,不论执行结果有无记录集,其返回值是0(4)带输出参数的存储过程:假如有return则返回return返回的那个值,假如要select输出参数,则出现输出参数的值,于有无return无关---------------------------------------------------------------------------------------------------------------------------------------------------3.获得存储过程的返回值--通过程序获得---------------------------------------------------------------------------------------------------------------------------------------------------SqlParameter[] cmdParms = { .. ,new SqlParameter("@return",SqlDbType.Int)};cmdParms[cmdParms.Length - 1].Direction = ParameterDirection.ReturnValue;或者cmdParms[cmdParms.Length - 1].Direction = ParameterDirection.Output或者cmdParms[cmdParms.Length - 1].Direction = ParameterDirection.Input;得到返回值object bj = cmdParms[cmdParms.Length - 1].Value;。

SQL_Server存储过程学习总结

SQL_Server存储过程学习总结

SQL Server数据库:存储过程学习总结一、SQL Server生成唯一值的方法NEWID() -- SQL Server中生成唯一序列值的函数。

SYS_GUID() --Oracle中生成唯一序列值的函数。

二、事务的应用TransactionSQL Server中的Transaction,需显示开启,提交/回滚,且一个Transaction必须要有Commit Transaction/Rollback Transaction。

且Commit/Rollback一定要在return之前。

在存储过程中试用Transaction的示例:IF EXISTS(SELECT*FROM SYSOBJECTS WHERE name='my_sp_test'AND TYPE='P')BEGIN DROP PROCEDURE my_sp_test;END;GOcreate procedure my_sp_test @i int, @outstr varchar(100)out asbegin trybegin transaction-- 事务开启declare @j int;if @i<10 beginset @outstr ='直接Return,并未Commit或Rollback Transaction.';return;endelse beginset @outstr ='抛出自定义异常,并在异常捕获处Rollback Transaction.';RAISERROR (66666,-- Message id.16,-- Severity,1 -- State,);end;commit transaction;-- 提交事务end trybegin catchif@@ERROR=66666 begin-- 判断是否存在开启的事务,避免如果事务在这之前已提交或者已回滚,再次回滚会抛异常if(@@TRANCOUNT<> 0)beginrollback transaction;-- 事务回滚end;end;return;end catch;go测试存储过程,如下代码:/* 第一个入参= 12,不会产生异常*/DECLARE @OUTSTR_test V ARCHAR(100);exec dbo.my_sp_test12,@OUTSTR_test outprint @OUTSTR_test ;-- @OUTSTR_test = '抛出自定义异常,并在异常捕获处Rollback Transaction.'/* 第一个入参= 8,执行后则会出现异常,异常信息如下行* 'EXECUTE 后的事务计数指示BEGIN 和COMMIT 语句的数目不匹配。

SQL Server 存储过程详细解说

SQL Server 存储过程详细解说

8、 加密存储过程
--加密WITH ENCRYPTION if (object_id('proc_temp_encryption', 'P') is not null) drop proc proc_temp_encryptiongocreate proc proc_temp_encryptionwith encryptionas select * from student;goexec proc_temp_encryption;exec sp_helptext 'proc_temp';exec sp_helptext 'proc_temp_encryption';
6、 带输出参数存储过程
if (object_id('proc_getStudentRecord', 'P') is not null) drop proc proc_getStudentRecordgocreate proc proc_getStudentRecord( @id int, --默认输入参数 @name varchar(20) out, --输出参数 @age varchar(20) output--输入输出参数)as select @name = name, @age = age from student where id = @id and sex = @age;go-- declare @id int, @name varchar(20), @temp varchar(20);set @id = 7; set @temp = 1;exec proc_getStudentRecord @id, @name out, @temp output;select @name, @temp;print @name + '#' + @temp;

SqlServer存储过程详解

SqlServer存储过程详解

SqlServer存储过程详解SqlServer存储过程详解1.创建存储过程的基本语法模板:if (exists (select*from sys.objects where name ='pro_name'))drop proc pro_namegocreate proc pro_name@param_name param_type [=default_value]asbeginsql语句endps:[]表⽰⾮必写内容。

sys.objects存储的是本数据库中的信息,不仅仅存储表名,还有存储过程名、视图名、触发器等等。

例如:1if (exists (select*from sys.objects where name ='USP_GetAllUser'))2drop proc USP_GetAllUser3go4create proc USP_GetAllUser5@UserId int=16as7set nocount on;8begin9select*from UserInfo where Id=@UserId10endps:SQL Server 实⽤⼯具将 GO 解释为应将当前的 Transact-SQL 批处理语句发送给 SQL Server 的信号。

当前批处理语句是⾃上⼀ GO 命令后输⼊的所有语句,若是第⼀条 GO 命令,则是从特殊会话或脚本的开始处到这条 GO 命令之间的所有语句。

2.调⽤⽅法:exec P_GetAllUser 2;ps:⼀般在执⾏存储过程是,最好加上架构名称,例如 P_GetAllUser 这样可以可以减少不必要的系统开销,提⾼性能。

因为如果在存储过程名称前⾯没有加上架构名称,SQL SERVER ⾸先会从当前数据库sys schema(系统架构)开始查找,如果没有找到,则会去其它schema查找,最后在dbo架构(系统管理员架构)⾥⾯查找。

SQLServer执行存储过程

SQLServer执行存储过程

SQLServer执⾏存储过程⼀.不含参数的存储过程1.没有返回值:创建语句:CREATE PROCEDURE dbo.ProTestASDECLARE @test intSET @test = 1Go执⾏SQL语句:EXEC dbo.ProTest消息:命令已成功完成。

结果:⽆2.有返回值(使⽤select):创建语句:CREATE PROCEDURE dbo.ProTestASDECLARE @test INT;SET @test = 123;SELECT @test;GO执⾏SQL语句:EXEC dbo.ProTest消息:(1 ⾏受影响)。

结果:123(表结构形式)3.有返回值(使⽤return)创建语句:CREATE PROCEDURE dbo.ProTestASDECLARE @test INT;SET @test = 123;RETURN @test;GO执⾏SQL语句:DECLARE @test INT;EXEC @test = dbo.ProTest;SELECT @test消息:(1 ⾏受影响)。

结果:123(表结构形式)4.查询⼀个或多个集合(类似执⾏select)创建语句:CREATE PROCEDURE dbo.ProTestASSELECT *FROM dbo.Material_SO_PipeOrder;GO执⾏SQL语句:EXEC dbo.ProTest消息:查询出来的条数结果:查询结果⼆.含参数的存储过程1.没有返回值创建语句:CREATE PROCEDURE dbo.ProTest@OrderNO NVARCHAR(50) ,@OrderName NVARCHAR(50) ,@RMDSC NVARCHAR(500) = NULL --表⽰可为空参数ASIF ( @OrderNO IS NOT NULL )BEGININSERT INTO dbo.Material_SO_PipeOrder( ID, OrderNO, OrderName, RMDSC )VALUES ( NEWID(), -- ID - uniqueidentifier@OrderNO, -- OrderNO - nvarchar(50)@OrderName, -- OrderName - nvarchar(50)@RMDSC -- RMDSC - nvarchar(500));END;GO执⾏SQL语句:EXEC dbo.ProTest @OrderNO = N'单号001', @OrderName = N'名称001', @RMDSC = N'备注'(或不写列名"EXEC dbo.ProTest N'单号001', N'名称001', N'备注';",但不能混合使⽤,下同)消息:(1 ⾏受影响)。

SQLSERVER存储过程大总结

SQLSERVER存储过程大总结

SQLSERVER存储过程大总结
1、基本概念
存储过程(Stored Procedure)是指把 sql 语句组织成的一段程序,由 sql server 解释器执行,可以组织多条 sql 语句,完成复杂(多条
sql 语句)的任务。

它可以向客户端(也就是用户)返回多条结果集,也
就是可以同时返回多个表的记录,因此,存储过程也可以操作数据,也可
以像程序语言一样进行条件判断、循环等等。

存储过程有以下优势:
(1)使系统中的数据库操作更加集中,功能也更加集中;
(2)减少网络传输量,这些传输量大多显示在数据查询时;
(3)可以更加有效地处理程序逻辑,减少了程序中sql代码量;
(4)由于存储过程都在服务器上运行,所以可以比较方便地把数据
库操作部分从程序中分离出来;
(5)可以有效地把更多的系统负荷交给数据库服务器,让它更加集中;
(6)可以使用参数来结合存储过程,这样使得代码更加灵活;
(7)存储过程不依赖于客户端,所以对于客户端可以是任何类型,
比如 web页面,winform,数据库管理工具等等;
(8)存储过程支持一些比较复杂的功能,比如数据库访问不同的表,表之间的连接,加工,存储等等功能;
(9)存储过程支持数据安全。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQLSERVER存储过程使用说明书引言首先介绍一下什么是存储过程:存储过程就是将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,并且这样的语句是放在数据库中的,还可以根据条件执行不同SQL语句,那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。

请大家先看一个小例子:create proc query_bookasselect * from bookgo--调用存储过程exec query_book请大家来了解一下存储过程的语法。

Create PROC [ EDURE ] procedure_name [ ; number ][ { @parameter data_type }[ VARYING ] [ = default ] [ OUTPUT ]] [ ,...n ][ WITH{ RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ][ FOR REPLICATION ]AS sql_statement [ ...n ]一、参数简介1、procedure_name新存储过程的名称。

过程名必须符合标识符规则,且对于数据库及其所有者必须唯一。

要创建局部临时过程,可以在 procedure_name 前面加一个编号符 (#procedure_name),要创建全局临时过程,可以在 procedure_name 前面加两个编号符 (##procedure_name)。

完整的名称(包括 # 或 ##)不能超过 128 个字符。

指定过程所有者的名称是可选的。

2、;number是可选的整数,用来对同名的过程分组,以便用一条 Drop PROCEDURE 语句即可将同组的过程一起除去。

例如,名为 orders 的应用程序使用的过程可以命名为 orderproc;1、orderproc;2 等。

Drop PROCEDURE orderproc 语句将除去整个组。

如果名称中包含定界标识符,则数字不应包含在标识符中,只应在 procedure_name 前后使用适当的定界符。

3、@parameter过程中的参数。

在 Create PROCEDURE 语句中可以声明一个或多个参数。

用户必须在执行过程时提供每个所声明参数的值(除非定义了该参数的默认值)。

存储过程最多可以有 2100 个参数。

使用@符号作为第一个字符来指定参数名称。

参数名称必须符合标识符的规则。

每个过程的参数仅用于该过程本身;相同的参数名称可以用在其它过程中。

默认情况下,参数只能代替常量,而不能用于代替表名、列名或其它数据库对象的名称。

4、data_type参数的数据类型。

所有数据类型(包括 text、ntext 和 image)均可以用作存储过程的参数。

不过,cursor 数据类型只能用于 OUTPUT 参数。

如果指定的数据类型为 cursor,也必须同时指定 VARYING 和 OUTPUT 关键字。

说明:对于可以是cursor 数据类型的输出参数,没有最大数目的限制。

5、VARYING指定作为输出参数支持的结果集(由存储过程动态构造,内容可以变化)。

仅适用于游标参数。

6、default参数的默认值。

如果定义了默认值,不必指定该参数的值即可执行过程。

默认值必须是常量或 NULL。

如果过程将对该参数使用 LIKE 关键字,那么默认值中可以包含通配符(%、_、[] 和 [^])。

7、OUTPUT表明参数是返回参数。

该选项的值可以返回给 EXEC[UTE]。

使用 OUTPUT 参数可将信息返回给调用过程。

Text、ntext 和 image 参数可用作 OUTPUT 参数。

使用 OUTPUT 关键字的输出参数可以是游标占位符。

8、n表示最多可以指定 2100 个参数的占位符。

9、{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTIO N}RECOMPILE 表明 SQL Server 不会缓存该过程的计划,该过程将在运行时重新编译。

在使用非典型值或临时值而不希望覆盖缓存在内存中的执行计划时,请使用 RECOMPILE 选项。

ENCRYPTION 表示 SQL Server 加密 syscomments 表中包含 Create PROCEDURE 语句文本的条目。

使用 ENCRYPTION 可防止将过程作为 SQL Server 复制的一部分发布。

说明:在升级过程中,SQL Server 利用存储在 syscomments 中的加密注释来重新创建加密过程。

10、FOR REPLICATION指定不能在订阅服务器上执行为复制创建的存储过程。

.使用 FOR REPLICATION 选项创建的存储过程可用作存储过程筛选,且只能在复制过程中执行。

本选项不能和 WITH RECOMPILE 选项一起使用。

11、AS指定过程要执行的操作。

12、sql_statement过程中要包含的任意数目和类型的 Transact-SQL 语句。

但有一些限制。

13、n是表示此过程可以包含多条 Transact-SQL 语句的占位符。

14、注释/*和*/之间的为注释,可以包含一行和多行的说明文字。

15、其他说明存储过程的最大大小为 128 MB。

二、存储过程的优点都有哪些呢?1. 存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

2. 经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作。

当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。

可以极大的提高数据库的使用效率,减少程序的执行时间,这一点在较大数据量的数据库的操作中是非常重要的。

在代码上看,SQL语句和程序代码语句的分离,可以提高程序代码的可读性。

3. 存储过程可以设置参数,可以根据传入参数的不同重复使用同一个存储过程,从而高效的提高代码的优化率和可读性。

4. 安全性高,可设定只有某此用户才具有对指定存储过程的使用权存储过程的种类:(1)系统存储过程:以sp_开头,用来进行系统的各项设定.取得信息.相关管理工作,如 sp_help就是取得指定对象的相关信息。

(2)扩展存储过程以XP_开头,用来调用操作系统提供的功能exec master..xp_cmdshell 'ping 10.8.16.1'(3)用户自定义的存储过程,这是我们所指的存储过程常用格式模版:Create procedure procedue_name [@parameter data_type][output][with]{recompil e|encryption} as sql_statement解释:output:表示此参数是可传回的with {recompile|encryption} recompile:表示每次执行此存储过程时都重新编译一次;encryption:所创建的存储过程的内容会被加密。

三、实例讲解实例1:只返回单一记录集的存储过程。

要求1:查询表bankMoney的内容的存储过程create procedure sp_query_bankMoneyasselect * from bankMoneygoexec sp_query_bankMoney注* 在使用过程中只需要把中的SQL语句替换为存储过程名,就可以了很方便吧!实例2(向存储过程中传递参数):加入一笔记录到表bankMoney,并查询此表中userID= Zhangsan的所有存款的总金额。

Create proc insert_bank @param1 char(10),@param2 varchar(20),@param3 varchar (20),@param4 int,@param5 int outputwith encryption ---------加密asinsert bankMoney (id,userID,sex,Money) Values(@param1,@param2,@param3, @p aram4)select @param5=sum(Money) from bankMoney where userID='Zhangsan' go在SQL Server查询分析器中执行该存储过程的方法是:declare @total_price intexec insert_bank '004','Zhangsan','男',100,@total_price outputprint '总余额为'+convert(varchar,@total_price)go在这里再啰嗦一下存储过程的3种传回值(方便正在看这个例子的朋友不用再去查看语法内容):1.以Return传回整数2.以output格式传回参数3.Recordset传回值的区别:output和return都可在批次程式中用变量接收,而recordset则传回到执行批次的客户端中。

实例3:使用带有复杂 Select 语句的简单过程下面的存储过程从四个表的联接中返回所有作者(提供了姓名)、出版的书籍以及出版社。

该存储过程不使用任何参数。

USE pubsIF EXISTS (Select name FROM sysobjectsWhere name = 'au_info_all' AND type = 'P')Drop PROCEDURE au_info_allGOCreate PROCEDURE au_info_allASSelect au_lname, au_fname, title, pub_nameFROM authors a INNER JOIN titleauthor taON a.au_id = ta.au_id INNER JOIN titles tON t.title_id = ta.title_id INNER JOIN publishers pON t.pub_id = p.pub_idGOau_info_all 存储过程可以通过以下方法执行:EXECUTE au_info_all-- orEXEC au_info_all如果该过程是批处理中的第一条语句,则可使用:au_info_all实例4:使用带有参数的简单过程Create PROCEDURE au_info@lastname varchar(40),@firstname varchar(20)ASSelect au_lname, au_fname, title, pub_nameFROM authors a INNER JOIN titleauthor taON a.au_id = ta.au_id INNER JOIN titles tON t.title_id = ta.title_id INNER JOIN publishers pON t.pub_id = p.pub_idWhere au_fname = @firstnameAND au_lname = @lastnameGOau_info 存储过程可以通过以下方法执行:EXECUTE au_info 'Dull', 'Ann'-- orEXECUTE au_info @lastname = 'Dull', @firstname = '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 = 'Dull', @firstname = 'Ann'-- orau_info @firstname = 'Ann', @lastname = 'Dull'实例5:使用带有通配符参数的简单过程Create PROCEDURE au_info2@lastname varchar(30) = 'D%',@firstname varchar(18) = '%'ASSelect au_lname, au_fname, title, pub_nameFROM authors a INNER JOIN titleauthor taON a.au_id = ta.au_id INNER JOIN titles tON t.title_id = ta.title_id INNER JOIN publishers pON t.pub_id = p.pub_idWhere au_fname LIKE @firstnameAND au_lname LIKE @lastnameGOau_info2 存储过程可以用多种组合执行。

相关文档
最新文档