首页 理论教育 T⁃SQL执行存储过程方法

T⁃SQL执行存储过程方法

时间:2023-10-21 理论教育 版权反馈
【摘要】:可以使用TSQL语句中的EXECUTE命令执行存储过程。该参数不能用于扩展存储过程。 使用TransactSQL语句执行存储过程up_AllKc。 使用T-SQL语句执行存储过程up_getOneScore,来查找学号为“09101001”学生的课程编号为“3”的学科成绩。 使用TSQL语句创建存储过程up_FindName,来查找所有姓“李”的学生信息。嵌套级最高为32级,如果超过32级,就会导致整个调用过程错误。

T⁃SQL执行存储过程方法

可以使用T⁃SQL语句中的EXECUTE命令执行存储过程。

EXECUTE语句的语法形式如下。

978-7-111-33494-1-Chapter07-26.jpg

上述数据参数中:

●@return_status:是一个可选的整型变量,保存存储过程的返回状态。

●Procedure_name:要调用的存储过程名称。

●;Number:是可选的整数,用于将相同名称的过程进行组合,使得它们可以用DROP PROCEDURE语句同时删除。例如,创建一组存储过程Userproc;1、Userproc;2,DROP PROCEDURE Userproc语句将删除整个组。在对过程分组后,不能删除组中的单个过程,例如,DROP PROCEDURE Userproc;2是不允许。该参数不能用于扩展存储过程。

●@procedure_name_var:是局部定义变量名,代表存储过程名称。

●@parametrer:在CREATE PROCEDURE语句中定义的过程参数。参数名称前必须加上符号“@”。

●Value:过程中参数的值。如果未指定参数名称,参数值必须以CREATE PROCEDURE语句中定义的顺序给出。如果在CREATE POOCEDURE语句中定义了默认值,用户执行该过程时可以不必指定参数。

●@variable:是用来保存参数或者返回参数的变量。

●OUTPUT:指定存储过程必须返回一个参数。

●DEFAULT:根据过程的定义,提供参数的默认值。如果过程需要的参数值没有事先定义好,或缺少参数,或指定了DEFALUT关键字,就会出错。

●WITH RECOMPLE:表示本次执行之前要重编译。

【例7-6】 使用Transact⁃SQL语句执行存储过程up_AllKc。

代码如下。

978-7-111-33494-1-Chapter07-27.jpg

执行结果如图7-11所示。

978-7-111-33494-1-Chapter07-28.jpg

图7-11 存储过程执行结果

执行存储过程时需要指定要执行的存储过程的名称和参数,使用一个存储过程去执行一组T-SQL语句,可以在首次运行时即被编译,在编译过程中把T-SQL语句从字符形式转化成为可执行形式。

【例7-7】 使用T-SQL语句执行存储过程up_getScore来查找学号为“09101001”的学生的各科成绩。

代码如下。

978-7-111-33494-1-Chapter07-29.jpg(www.xing528.com)

执行结果如图7-12所示。

978-7-111-33494-1-Chapter07-30.jpg

图7-12 存储过程执行结果

如果存储过程中有OUTPUT参数,则该存储过程可以传出一个返回值

【例7-8】 使用T-SQL语句执行存储过程up_getOneScore,来查找学号为“09101001”学生的课程编号为“3”的学科成绩。

编写Transact-SQL语句如下。

978-7-111-33494-1-Chapter07-31.jpg

执行结果如图7-13所示。

978-7-111-33494-1-Chapter07-32.jpg

图7-13 存储过程执行结果

注意:

如果在一个批处理中只有一个存储过程要执行,可以直接引用存储过程名而不必使用EXECUTE关键字。此外,如果省略EXECUTE关键字,则存储过程必须是批处理中的第一条语句,否则会出错。

在创建存储过程时,参数的默认值中可以使用通配符

【例7-9】 使用T⁃SQL语句创建存储过程up_FindName,来查找所有姓“李”的学生信息。

978-7-111-33494-1-Chapter07-33.jpg

创建完后,可以调用此存储过程。

978-7-111-33494-1-Chapter07-34.jpg

执行结果显示Xs表中姓名以“李”开头的纪录。

执行如下语句。

978-7-111-33494-1-Chapter07-35.jpg

执行结果为显示Xs表中姓名以“张”开头的纪录。

存储过程可以调用其他存储过程,此时就可能会产生嵌套。当调用的过程开始执行时,嵌套级会增加,当调用过程执行结束时,嵌套级则会减少。嵌套级最高为32级,如果超过32级,就会导致整个调用过程错误

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈