6存储过程与触发器1)存储过程是T-SQL语句的集合,它作为数据库对象之一被存储在数据库中。(2)存储过程的作用和使用方式类似于一些编程语言中的过程。使用存储过程有以下优点:1)可以在一个存储过程中执行多条SQL语句;2)可通过输入参数的变化调用存储过程进行动态执行:3)存储过程在创建时就在服务器端进行了编译,节省SQI语句的运行时间:4)提供了安全机制,它限制了用户访问SQL语句的权利,只为特定用户开放存储过程
6 存储过程与触发器 (1)存储过程是T-SQL语句的集合,它作为数据库对象之 一被存储在数据库中。 (2)存储过程的作用和使用方式类似于一些编程语言中的 过程。 使用存储过程有以下优点: 1)可以在一个存储过程中执行多条SQL语句; 2)可通过输入参数的变化调用存储过程进行动态执行; 3)存储过程在创建时就在服务器端进行了编译,节省SQL 语句的运行时间; 4)提供了安全机制,它限制了用户访问SQL语句的权利, 只为特定用户开放存储过程
6.1创建存储过程用户首先创建存储过程以实现特定的功能,然后可在程序中调用该存储过程执行。1使用企业管理器创建视图【例5-63】在School数据库中,创建存储过程procCourse,查询所有课程信息。1)打开企业管理器,展开Schoo1数据库文件夹,右单击“存储过程”,在弹出的快捷菜单上选择“新建存储过程”命令,打开新建存储过程对话框。存储过程屈性一新建存就过程2)将“「OWNER】”和常规“[PROCEDURE NAME]】”国极限园名称N)新建荐储过程所有者:创建日期参数分别替换成存储文本CREATEPROCEDUREIOWNERLIPROCEDURENAMEIAS过程所有者的名称和存储过程的名称。默45.17认为dbo和PROCEDURE另存为模(S)检查语法仁确定职消帮助NAME]
6.1 用户首先创建存储过程以实现特定的功能,然后可在程 序中调用该存储过程执行。 1.使用企业管理器创建视图 【例5-63】在School数据库中,创建存储过程proc_Course, 查询所有课程信息。 1)打开企业管理器,展开School数据库文件夹,右单击 “存储过程”,在弹出的快捷菜单上选择“新建存储过程” 命令,打开新建存储过程对话框。 2)将“[OWNER]”和 “[PROCEDURE NAME]” 参数分别替换成存储 过程所有者的名称和 存储过程的名称。默 认为dbo和[PROCEDURE NAME]
3)从“文本”列表框的第二行开始输入存储过程的T-SQI语句。这里输入的T-SQL语句仅有一条:SELECT * FROM T CourSe。4】单击【语法检查】按钮可以检查创建存储过程的T-SQL语句的语法是否正确。单击【另存为模板】按钮可将所创建的存储过程设置为模板。5)完成后,单击【确定】按钮即创建和保存了存储过程proc_Course。在储过程压性一新建春储过程常规名称N)《新建存储过程>权R所有著创建日期:SQLServer全业营理器文本江BOCEDUREDroctoufseSELECT语法检查成功!FROMTCourse确定23,2/2检查语法(C)另存为模板(S)确定取消帮助图5-64创建存储过程示例
3)从“文本”列表框的第二行开始输入存储过程的T-SQL 语句。这里输入的T-SQL语句仅有一条: SELECT * FROM T_Course。 4)单击【语法检查】按钮可以检查创建存储过程的T-SQL 语句的语法是否正确。单击【另存为模板】按钮可将所创 建的存储过程设置为模板。 5)完成后,单击【确定】按钮即创建和保存了存储过程 proc_Course。 图5-64 创建存储过程示例
2:使用T-SQL语句创建存储过程可以直接在SQL查询分析器中定义和调用存储过程。常用存储过程的语法格式:CREATEPROCIDURE存储过程名【@形式参数数据类型】「VARYING】「=默认值】「OUTPUTASSQL语句1SQL语句n说明:“形式参数”名称必须符合标识符规则:OUTPUT表示该参数是可以返回的,可将信息返回调用者:如果有多个参数,可以依次按以上参数定义规则列出,用逗号“,”隔开
2.使用T-SQL语句创建存储过程 可以直接在SQL查询分析器中定义和调用存储过程。 常用存储过程的语法格式: CREATE PROC[DURE] 存储过程名 {@形式参数 数据类型}[VARYING][=默认值][OUTPUT] AS SQL语句1 . SQL语句n 说明: “形式参数”名称必须符合标识符规则;OUTPUT表示该参 数是可以返回的,可将信息返回调用者;如果有多个参数, 可以依次按以上参数定义规则列出,用逗号“,”隔开
【例5-64】在Schoo1中创建一个的存储过程proc_SearchStudent,查询指定学生的选课情况。CREATE PROC proc SearchStudent@stcodechar(8)ASSELECT T Student.StudentName,T Course.CourseNameFROMT StudentJOINT Grade JOIN T CourseON T Grade.CourseCode=T Course.CourseCodeON T Student.StudentCode=T Grade.StudentCodeWHERE T Student.StudentCode=@scode
【例5-64】在School中创建一个的存储过程 proc_SearchStudent,查询指定学生的选课情况。 CREATE PROC proc_SearchStudent @stcode char(8) AS SELECT T_Student.StudentName,T_Course.CourseName FROM T_Student JOIN T_Grade JOIN T_Course ON T_Grade.CourseCode=T_Course.CourseCode ON T_Student.StudentCode=T_Grade.StudentCode WHERE T_Student.StudentCode=@scode