当前位置:  数据库>sqlserver

SQL Server创建存储过程详解

    来源: 互联网  发布时间:2014-08-29

    本文导语:  什么是存储过程? 1.存储过程(procedure)类似于C语言中的函数 2.用来执行管理任务或应用复杂的业务规则 3.存储过程可以带参数,也可以返回结果 4.存储过程可以包含数据操纵语句、变量、逻辑 控制语句等 存储过程的优点 (...

什么是存储过程?
1.存储过程(procedure)类似于C语言中的函数
2.用来执行管理任务或应用复杂的业务规则
3.存储过程可以带参数,也可以返回结果
4.存储过程可以包含数据操纵语句、变量、逻辑 控制语句等

存储过程的优点

(1)执行速度快。
存储过程创建是就已经通过语法检查和性能优化,在执行时无需每次编译。
存储在数据库服务器,性能高。

(2)允许模块化设计。
只需创建存储过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改 。

(3)提高系统安全性。
  可将存储过程作为用户存取数据的管道。可以限制用户对数据表的存取权限,建立特定的存储过程供用户使用,完成对数据的访问。
  存储过程的定义文本可以被加密,使用户不能查看其内容。

(4)减少网络流量:
一个需要数百行Transact-SQL代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。

存储过程的分类
1.系统存储过程
2.由系统定义,存放在master数据库中
3.类似C语言中的系统函数
4.系统存储过程的名称都以“sp_”开头或”xp_”开头
5.用户自定义存储过程
6.由用户在自己的数据库中创建的存储过程
7.类似C语言中的用户自定义函数

常用的系统存储过程

 

代码如下:

EXEC sp_databases /*列出当前系统中的数据库*/
EXEC  sp_renamedb 'Northwind','Northwind1' /*修改数据库的名称(单用户访问, 最简单的办法就是执行SQL语句时关掉企业管理器)*/
USE stuDB

GO

EXEC sp_tables /*当前数据库中查询的对象的列表*/

EXEC sp_columns stuInfo /*返回某个表列的信息*/

EXEC sp_help stuInfo /*查看表stuInfo的信息*/

EXEC sp_helpconstraint stuInfo /*查看表stuInfo的约束*/

EXEC sp_helpindex stuMarks /*查看表stuMarks的索引*/

EXEC sp_helptext 'view_stuInfo_stuMarks' /*查看视图的语句文本*/

EXEC sp_stored_procedures  /*查看当前数据库中的存储过程*/

常用的扩展存储过程
1.常用的扩展存储过程:xp_cmdshell
2.可以执行DOS命令下的一些的操作
3.以文本行方式返回任何输出
4.调用语法:
  EXEC xp_cmdshell DOS命令 [NO_OUTPUT]

 

代码如下:

USE master

GO

EXEC xp_cmdshell 'mkdir d:/bank', NO_OUTPUT /*创建文件夹D:/bank*/

IF EXISTS(SELECT * FROM sysdatabases
          WHERE name='bankDB')
   DROP DATABASE bankDB
GO

CREATE DATABASE bankDB
 (
  …
)
GO

EXEC xp_cmdshell 'dir D:/bank/' --查看文件 /*查看文件夹D:/bank*/

如何创建存储过程?

q       定义存储过程的语法
    CREATE  PROC[EDURE]  存储过程名
              @参数1  数据类型 = 默认值,
               …… ,
              @参数n  数据类型 OUTPUT
            AS
            SQL语句
    GO
q       和C语言的函数一样,参数可选
q       参数分为输入参数、输出参数
q       输入参数允许有默认值

创建不带参数的存储过程

 

代码如下:

CREATE PROCEDURE proc_stu /* proc_stu为存储过程的名称*/
  AS
    DECLARE @writtenAvg float,@labAvg float /* 笔试平均分和机试平均分变量 */

    SELECT @writtenAvg=AVG(writtenExam),
           @labAvg=AVG(labExam)  FROM stuMarks
    print '笔试平均分:'+convert(varchar(5),@writtenAvg)
    print '机试平均分:'+convert(varchar(5),@labAvg)

    IF (@writtenAvg>70 AND @labAvg>70)
       print '本班考试成绩:优秀' /* 显示考试成绩的等级 */
    ELSE
       print '本班考试成绩:较差'
    print '--------------------------------------------------'
    print '           参加本次考试没有通过的学员:'

    SELECT stuName,stuInfo.stuNo,writtenExam,labExam /* 显示未通过的学员 */
      FROM  stuInfo  INNER JOIN stuMarks ON
          stuInfo.stuNo=stuMarks.stuNo
                 WHERE writtenExam


    
 
 

您可能感兴趣的文章:

  • sql 版本详解 让你认识跟sql2000的区别
  • sql语言中delete删除命令语句详解
  • 探讨:sql插入空,默认1900-01-01 00:00:00.000的解决方法详解
  • sql server日期相减 的实现详解
  • 使用SQL Server判断文件是否存在后再删除(详解)
  • 深入SQL Server中定长char(n)与变长varchar(n)的区别详解
  • sql server定义联合主键的方法详解
  • Sql Server使用cursor处理重复数据过程详解
  • 深入SQL截取字符串(substring与patindex)的详解
  • SQL Server UPDATE语句的用法详解
  • 深入SQL SERVER合并相关操作Union,Except,Intersect的详解
  • 深入sql多表差异化联合查询的问题详解
  • oracle SQL递归的使用详解
  • SQL server 2005 判断表是否存在的方法详解
  • SQL Server正则表达式 替换函数应用详解
  • 基于SQL中SET与SELECT赋值的区别详解
  • 在sql server代理中配置邮件会话的方法详解
  • sql2005中创建CLR存储过程的方法详解
  • WEB前端 iis7站长之家
  • 深入sql server 2005 万能分页存储过程的详解
  • sql2005创建远程登录帐户的sql语句分享
  • 创建 sql server 链接服务器的sql代码
  • sql server 2008:您对无法重新创建的表进行了更改或者启用了“阻止保存重新创建表的更改”
  • sql server 创建主键(uuid和自增长)
  • 为什么用sqlserver生成的创建表的sql语句中都不包含主键信息???
  • sql server创建复合主键的2种方法
  • Sql Server 创建数据库脚本Create DATABASE
  • 关于创建数据库(SQL)和表的问题
  • SQL创建的几种存储过程
  • SQL Server创建链接服务器的存储过程示例分享
  • 使用sql语句创建和删除约束示例代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在SQL Server中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名
  • java调用sql server存储过程,如何取存储过程返回码(不是结果集)
  • 急!如何从一个shell文件中传递一个参数到sql文件中,不能用存储过程
  • 在SQL server 2000中用JAVA实现图片存储
  • 用SQL统计SQLServe表存储空间大小的代码
  • 返回SQL执行时间的存储过程
  • java能否调用SQL-SERVER存储过程呢?如果能?如何调?
  • MySQL 存储过程中执行动态SQL语句的方法
  • 浅析SQL Server中包含事务的存储过程
  • SQL SERVER 利用存储过程查看角色和用户信息的写法
  • sql server中sp_reset_connection存储过程的作用
  • 浅析SQL存储过程和事务处理
  • sql 存储过程批量删除数据的语句
  • Sql Server中存储过程中输入和输出参数(简单实例 一看就懂)
  • 关键字: oracle,存储过程,数据库,查询,动态sql包,数组,参传,jdbc 1
  • 请教一个JDBC调用SQL Server 存储过程的问题
  • SQL Server去除外键的存储过程
  • sql2005 存储过程技巧点滴记录
  • sql 判断函数、存储过程是否存在的代码整理
  • 在SQL Server启动时自动执行存储过程。第1/2页
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL Server统计SQL语句执行时间的脚本
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • SQL客户端软件 PKLite SQL Client
  • java命名空间java.sql接口databasemetadata的类成员方法: getsqlkeywords定义及介绍




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3