• 存储过程 HAPPY!!!!


    为什么需要存储过程

    1)数据不安全.网络传送SQL代码,容易被未授权者截获.

    2)每次提交SQL代码都要经过语法编译后在执行,影响应用程序的运行性能.

    3)网络流量大.对于反复执行的相同的SQL代码,将会在网络上多次传送增加网络传输量

    什么是存储过程

          存储过程(Procedure)是SQL语句和控制语句的预编译集合,保存在数据库里,可由应用程序

    调用执行,而且允许用户声明变量,逻辑控制语句及其他强大的编程功能

          存储过程可以包含逻辑控制语句和数据操作语句,他可以接收参数,输出参数,返回单个或多个结果集及返回值.

          存储过程可以包含一条SELECT语句;也可以包含一系列使用控制流的SQL语句

    存储过程的优点

    1)执行速度快,效率高

    2)减少网络流量

    3)具有良好的安全性

    存储过程的分类

    1)系统存储过程(System Stored Procedures)

    2)用户自定义的存储过程(User-defined Stored Procedures)

    调用存储过程的语法:

    EXEC [UTE] 存储过程名 [参数值]

    其中,EXEC是EXECUTE的简写

    用户自定义的存储过程

    下面是一段使用C#语言自定义方法的代码

    int    sun (int  a,int  b)

    {

        int s;

        s=a+b;

        return s;

    }

    创建不带参数的存储过程

    创建存储过程语法

    CREATE  PROC [EDURE]    存储过程名

                 [{@参数1   数据类型}   [=默认值]    [OUTPUT],

                 .....

                 {@参数n     数据类型}  [=默认值]     [OUTPUT] 

                ]

    AS

         SQL语句

    删除存储过程

    语法:

    OROP  PROC[EDURE]   存储过程名

    检测存储过程是否已经创建

    语法:

    IF  EXISTS  (SELECT * FROM  sysobjects  WHERE  name =存储过程名 )

        DROP  PROCEDURE  存储过程名

    GO

    创建带输入参数的存储过程

    存储过程中的参数分为两种:

    1) 输入参数:可以在调用时向存储过程传递参数,此类参数可用来向存储过程中传入值

    2)输出参数:如果希望返回值,则可以使用输出参数,输出参数后有"OUTPUT"标记,执行存储过程后,将把返回值存放在输出参数中,可供其他T-SQL语句读取访问.

    创建带参数的存储过程

    如果存储过程的参数后面有"OUTPUT"关键字,则表示此参数为输出参数;否则视为输入参数,输入参数还可以设置为默认值.

    执行带参数的存储过程

    语法

    EXEC[UTE]  [返回变量=]  存储过程名  [@参数1=]参数值1  [OUTPUT]  |  [DEFAULT],

                                                        ......,

                                                        [@参数1=]参数值n  [OUTPUT]  |  [DEFAULT]

    其中,OUTPUT表明参数是输出参数,DEFAULT表示参数的默认值

    处理错误信息

    RAISERROR

    在存储过程中,可以使用PRINT语句显示用户定义的错误信息.但是,这些信息是临时的,且只能显示给用户.

    RAISERROR返回用户定义的错误信息时,可指定严重级别,设置系统变量记录所发生的错误

  • 相关阅读:
    C#?和??运算符以及合并条件表达式
    Nhibernate Batch update returned unexpected row count from update; actual row count: 0 解决方案
    js根据ClassName来删除元素(有坑误入)
    C#正则表达式(通俗易懂)
    AngularJs自定义表单验证
    基于angularJs坐标转换指令(经纬度中的度分秒转化为小数形式 )
    网页乱码问题
    交换两个数值(值类型,引用类型)
    不用临时变量,交换二个变量的值
    PDF在线预览 (flexpaper+swftools+saveaspdfandxps)
  • 原文地址:https://www.cnblogs.com/xiaosedefeng/p/5272833.html
Copyright © 2020-2023  润新知