912存储过程的创建 功能:在当前数据中创建指定名称的存储过程。 说明 (1)存储过程名:存储过程名须符合标识符规则,且对于数据库及其所 有者是唯一的 (2)分组编号:整数,指明同名存储过程的分组编号,以便于一条drop procedure语句删除一组同名存储过程; (3)@形式参数:指明形式参数(形参)名称,形参有输入参数和输 出参数之分; (4)数据类型:指明形参的数据类型,包括text,next和 dimage等数据 类型,当形参是输入参数时,不能使用 cursor(游标)数据类型; (5)默认值:指明输入参数的默认值,可以是常量、NUL或字符匹配 运算符ike关键字,当输入参数定义了默认值后,调用语句可以省略 实参,否则必须提供实参 (6) output:指明形参是输出参数,且允许有返回值,否则为输入参数
9.1.2 存储过程的创建 功能:在当前数据中创建指定名称的存储过程。 说明: (1)存储过程名:存储过程名须符合标识符规则,且对于数据库及其所 有者是唯一的; (2)分组编号:整数,指明同名存储过程的分组编号,以便于一条drop procedure语句删除一组同名存储过程; (3)@形式参数:指明形式参数(形参)名称,形参有输入参数和输 出参数之分; (4)数据类型:指明形参的数据类型,包括text,ntext和image等数据 类型,当形参是输入参数时,不能使用cusor(游标)数据类型; (5)默认值:指明输入参数的默认值,可以是常量、NULL或字符匹配 运算符like关键字,当输入参数定义了默认值后,调用语句可以省略 实参,否则必须提供实参; (6)output:指明形参是输出参数,且允许有返回值,否则为输入参数;
912存储过程的创建 (7) varying:指明返回值是可变的,当形参数据类型为 cursor时需 指定 varying选项; (8) recompilelencryption: recompile表示每次重新编译存储过程, 而 encryption表示加密存储过程文本 (9) for replication:表示创建的存储过程只能在复制过程中执行 而不能在订阅服务器上执行。 for replication和 with encryption不 能联合使用; (10)as:表示指定要执行的操作 (11)sq语句:过程中包含的任意类型和数目的SQL语句,但有 些限制,如不可以使用创建数据库对象的语句
9.1.2 存储过程的创建 (7)varying:指明返回值是可变的,当形参数据类型为cursor时需 指定varying选项; (8)recompile|encryption:recompile表示每次重新编译存储过程, 而encryption表示加密存储过程文本; (9)for replication:表示创建的存储过程只能在复制过程中执行, 而不能在订阅服务器上执行。for replication和with encryption不 能联合使用; (10)as:表示指定要执行的操作; (11)sql语句:过程中包含的任意类型和数目的SQL语句,但有一 些限制,如不可以使用创建数据库对象的语句
912存储过程的创建 【例9-1】创建一个存储过程,用来求任意一个数的阶乘。 use xg if exists (select name from sysobjects where name=fact and type =p) drop proc fac create procedure fact @n int, @f int output as if @n<0 print'你输入了的+cast@ n as varchar(20)+,请输入非负数 else begi declare @i int set @i= set @f=1 while @i<=@n begin set @f=@f@i set @i=@i+1 end print cast@ n as varchar(20)+的阶乘是:'+cast(@ f as varchar(20) end
9.1.2 存储过程的创建 【例9-1】 创建一个存储过程,用来求任意一个数的阶乘。 use jxgl if exists(select name from sysobjects where name='fact' and type ='p') drop proc fact go create procedure fact @n int,@f int output as if @n<0 print '你输入了的'+cast(@n as varchar(20))+',请输入非负数' else begin declare @i int set @i=1 set @f=1 while @i<=@n begin set @f=@f*@i set @i=@i+1 end print cast(@n as varchar(20))+'的阶乘是:'+cast(@f as varchar(20)) end
912存储过程的创建 2.使用企业管理器创建存储过程 【例9-2】使用企业管理器创建一个打印9乘9 乘法表的存储过程 ●操作步骤如下: (1)在企业管理器中选择数据库jg节点中的 “存储过程”节点,右击弹出快捷菜单,如图 9-1所示,单击“新建存储过程”命令后,弹 出“存储过程属性”对话框,如图9-2所示
9.1.2 存储过程的创建 ⚫ 2.使用企业管理器创建存储过程 ⚫ 【例9-2】 使用企业管理器创建一个打印9乘9 乘法表的存储过程。 ⚫ 操作步骤如下: ⚫ (1)在企业管理器中选择数据库jxgl节点中的 “存储过程”节点,右击弹出快捷菜单,如图 9-1所示,单击“新建存储过程”命令后,弹 出“存储过程属性”对话框,如图9-2所示
912存储过程的创建 SQL Server Enterprise夏magr-控制台,回回区存储过程属性一新建存储过程 险文件)操作③)查看的工具〔)窗口①)帮助0)=常规 中中国回X国品画米N0 〈新建存储过程 权限巴 存储过程31个项目 SHUJU (Windows NT) 所有者 口数据库 名称 所有者 e目izgl 创建日期 关系图 dt_whocheckedout 文本 dt_verstamp007 TE PROCEDURE [OWNER)(PROCEDURE NAMEJASI 6视图 dt_verstamp006 储过程 新建存储过程 npar am 角色 np ar ans dbo 规则 查看① 默认值从这里创建窗口( yid_ u yid 民用户定义 E用户定义 刷新①) urcecontrol dbo 导出列表) 枪查语法①」另存为模板 帮助 确定 取消 图9-1“企业管理器”对话框1 图9-2“存储过程属性”对话框
9.1.2 存储过程的创建 图9-1 “企业管理器”对话框1 图9-2 “存储过程属性”对话框