精华内容
下载资源
问答
  • 存储过程与SQL语句对比 优势: 1、提高性能 SQL语句在创建过程时进行分析和编译。 存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的存储计划,这样,在...

    存储过程与SQL语句对比

    优势:

    1、提高性能
    SQL语句在创建过程时进行分析和编译。 存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的存储计划,这样,在执行过程时便可节省此开销。
    2、降低网络开销
    存储过程调用时只需用提供存储过程名和必要的参数信息,从而可降低网络的流量。
    3、便于进行代码移植
    数据库专业人员可以随时对存储过程进行修改,但对应用程序源代码却毫无影响,从而极大的提高了程序的可移植性。
    4、更强的安全性
    1)系统管理员可以对执行的某一个存储过程进行权限限制,避免非授权用户对数据的访问
    2)在通过网络调用过程时,只有对执行过程的调用是可见的。 因此,恶意用户无法看到表和数据库对象名称、嵌入自己的 Transact-SQL 语句或搜索关键数据。
    3)使用过程参数有助于避免 SQL 注入攻击。 因为参数输入被视作文字值而非可执行代码,所以,攻击者将命令插入过程内的 Transact-SQL 语句并损害安全性将更为困难。
    4)可以对过程进行加密,这有助于对源代码进行模糊处理。 

    劣势:

    1、存储过程需要专门的数据库开发人员进行维护,但实际情况是,往往由程序开发员人员兼职

    2、设计逻辑变更,修改存储过程没有SQL灵活

    为什么在实际应用中,存储过程用到相对较少呢?

    在通常的项目研发中,用存储过程却相对较少,这是为什么呢?
    分析原因如下:
    1)没有特定的数据库开发人员,普通程序员兼职进行数据库操作
    2)程序员往往只需操作程序,即可完成数据访问,无需再在数据库上进行开发
    3)项目需求变动比较频繁,修改SQL语句比较方便,特别是涉及逻辑变更 

    存储过程与SQL语句如何抉择?

    基于实际应用的经验,给予如下建议:

    1、在一些高效率或者规范性要求比较高的项目,建议采用存储过程
    2、对于一般项目建议采用参数化命令方式,是存储过程与SQL语句一种折中的方式
    3、对于一些算法要求比较高,涉及多条数据逻辑,建议采用存储过程

    展开全文
  • 存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的存储计划,这样,在执行过程时便可节省此开销。 2、降低网络开销 存储过程调用时只需用提供存储过程名和...
  • 存储过程:使用一个名称存储的预编译T-SQL语句和流程控制语句的集合 由数据库开发人员或数据库管理员编写 用来执行管理任务或应用复杂的业务规则 优点:执行速度更快 首次运行时,进行优化和编译得到执行计划并...

        存储过程:使用一个名称存储的预编译T-SQL语句和流程控制语句的集合
                  由数据库开发人员或数据库管理员编写
                  用来执行管理任务或应用复杂的业务规则 
        优点:执行速度更快
              首次运行时,进行优化和编译得到执行计划并将该计划存储在系统表中,以后直接运行。
              实现多个程序共享应用程序逻辑
              组件式编程
              能够屏蔽数据库的结构,实现更高的安全性
              减少网络流通量

    存储过程与SQL语句对比

     

    优势:

    1、提高性能
    SQL语句在创建过程时进行分析和编译。 存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的存储计划,这样,在执行过程时便可节省此开销。
    2、降低网络开销
    存储过程调用时只需用提供存储过程名和必要的参数信息,从而可降低网络的流量。
    3、便于进行代码移植
    数据库专业人员可以随时对存储过程进行修改,但对应用程序源代码却毫无影响,从而极大的提高了程序的可移植性。
    4、更强的安全性
    1)系统管理员可以对执行的某一个存储过程进行权限限制,避免非授权用户对数据的访问
    2)在通过网络调用过程时,只有对执行过程的调用是可见的。 因此,恶意用户无法看到表和数据库对象名称、嵌入自己的 Transact-SQL 语句或搜索关键数据。
    3)使用过程参数有助于避免 SQL 注入攻击。 因为参数输入被视作文字值而非可执行代码,所以,攻击者将命令插入过程内的 Transact-SQL 语句并损害安全性将更为困难。
    4)可以对过程进行加密,这有助于对源代码进行模糊处理。

     

    劣势:

    1、存储过程需要专门的数据库开发人员进行维护,但实际情况是,往往由程序开发员人员兼职

    2、设计逻辑变更,修改存储过程没有SQL灵活

    为什么在实际应用中,存储过程用到相对较少呢?

    在通常的项目研发中,用存储过程却相对较少,这是为什么呢?
    分析原因如下:
    1)没有特定的数据库开发人员,普通程序员兼职进行数据库操作
    2)程序员往往只需操作程序,即可完成数据访问,无需再在数据库上进行开发
    3)项目需求变动比较频繁,修改SQL语句比较方便,特别是涉及逻辑变更 

    存储过程与SQL语句如何抉择?

    基于实际应用的经验,给予如下建议:

    1、在一些高效率或者规范性要求比较高的项目,建议采用存储过程
    2、对于一般项目建议采用参数化命令方式,是存储过程与SQL语句一种折中的方式
    3、对于一些算法要求比较高,涉及多条数据逻辑,建议采用存储过程

    展开全文
  • SQLSERVER: [code="sql"]CREATE PROCEDURE [dbo].[PROC_DELETE_CAN_ITEM] @CAN_ITEM_IDS NVARCHAR(200), @RETURNVALUE INT OUTPUT AS BEGIN TRANSACTION DECLARE @ERRORCOUNT INT ,@CAN_ITEM_ID ...

    ORACLE:

     

    CREATE OR REPLACE PROCEDURE  PROC_DELETE_CAN_ITEM 
    (   
        CAN_ITEM_IDS IN VARCHAR2,   
        RETURNVALUE OUT INT   
    )   
    IS   
        ERRORCOUNT INT;   
        VAR_CAN_ITEM_ID INT;   
        VAR_IDS VARCHAR2(200);
    BEGIN   
        RETURNVALUE:=0; 
        WHILE instr(CAN_ITEM_IDS,',')>0 LOOP   
          BEGIN   
              VAR_CAN_ITEM_ID:=SUBSTR(VAR_IDS,1,INSTR(VAR_IDS,',')-1);   
              --刉壺CAN_ITEM   
              UPDATE CAN_ITEM SET VALID=0 WHERE CAN_ITEM_ID=VAR_CAN_ITEM_ID;   
              --刉壺AUTO_MODEL_CAN_ITEM   
              DELETE FROM AUTO_MODEL_CAN_ITEM WHERE CAN_ITEM_ID=VAR_CAN_ITEM_ID;   
              --刉壺CURRENT_CAN_ITEM   
              DELETE FROM CURRENT_CAN_ITEM WHERE CAN_ITEM_ID=VAR_CAN_ITEM_ID;   
              VAR_IDS:=SUBSTR(CAN_ITEM_IDS,INSTR(CAN_ITEM_IDS,',')+1,LENGTH(CAN_ITEM_IDS)-INSTR(CAN_ITEM_IDS,','));   
          END;   
        END LOOP;   
            --刉壺CAN_ITEM   
            UPDATE CAN_ITEM SET VALID=0 WHERE CAN_ITEM_ID=CAN_ITEM_IDS;   
            --刉壺AUTO_MODEL_CAN_ITEM   
            DELETE FROM AUTO_MODEL_CAN_ITEM WHERE CAN_ITEM_ID=CAN_ITEM_IDS;   
            --刉壺CURRENT_CAN_ITEM   
            DELETE FROM CURRENT_CAN_ITEM WHERE CAN_ITEM_ID=CAN_ITEM_IDS;   
        EXCEPTION   
            WHEN OTHERS THEN
            ROLLBACK;   
            RETURNVALUE:=1;   
            RETURN;
    END; 
    
     




    SQLSERVER:


    [code="sql"]CREATE PROCEDURE [dbo].[PROC_DELETE_CAN_ITEM]
    @CAN_ITEM_IDS NVARCHAR(200),
    @RETURNVALUE INT OUTPUT
    AS
    BEGIN TRANSACTION
    DECLARE @ERRORCOUNT INT ,@CAN_ITEM_ID INT
    BEGIN
    SET @ERRORCOUNT=0
    WHILE CHARINDEX (',',@CAN_ITEM_IDS)>0
    BEGIN
    SET @CAN_ITEM_ID=LEFT(@CAN_ITEM_IDS,CHARINDEX(',',@CAN_ITEM_IDS)-1)
    --删除CAN_ITEM
    UPDATE CAN_ITEM SET VALID=0 WHERE CAN_ITEM_ID=@CAN_ITEM_ID
    --删除AUTO_MODEL_CAN_ITEM
    DELETE FROM AUTO_MODEL_CAN_ITEM WHERE CAN_ITEM_ID=@CAN_ITEM_ID
    --删除CURRENT_CAN_ITEM
    DELETE FROM CURRENT_CAN_ITEM WHERE CAN_ITEM_ID =@CAN_ITEM_ID
    SET @ERRORCOUNT=@ERRORCOUNT+@@ERROR
    SET @CAN_ITEM_IDS=SUBSTRING( @CAN_ITEM_IDS,CHARINDEX(',',@CAN_ITEM_IDS)+1,LEN(@CAN_ITEM_IDS)-CHARINDEX(',',@CAN_ITEM_IDS))
    END
    --删除CAN_ITEM
    UPDATE CAN_ITEM SET VALID=0 WHERE CAN_ITEM_ID=@CAN_ITEM_IDS
    --删除AUTO_MODEL_CAN_ITEM
    DELETE FROM AUTO_MODEL_CAN_ITEM WHERE CAN_ITEM_ID=@CAN_ITEM_IDS
    --删除CURRENT_CAN_ITEM
    DELETE FROM CURRENT_CAN_ITEM WHERE CAN_ITEM_ID =@CAN_ITEM_IDS
    SET @ERRORCOUNT=@ERRORCOUNT+@@ERROR
    END
    IF(@ERRORCOUNT0)
    BEGIN
    ROLLBACK TRANSACTION   --回滚事务
    SET @RETURNVALUE=0     --执行失败返回0
    END
    ELSE
    BEGIN
    COMMIT TRANSACTION    --提交事务
    SET @RETURNVALUE=1     --执行成功返回1
    END

    GO

     

    展开全文
  • 数据库中的存储过程与触发器对比 特点 存储过程 触发器 操作 SQL DML 范围 查询 增删改 运行方式 执行SQL时 涉及的表或字段值有变化时运行,即事件触发 参数 有 无 返回值 可有可无 无 事务 ...

    数据库中的存储过程与触发器对比

    特点 存储过程 触发器
    操作 SQL DML
    范围 查询 增删改
    运行方式 执行SQL时 涉及的表或字段值有变化时运行,即事件触发
    参数
    返回值 可有可无
    事务 可有可无
    优点 运行快 运行快
    缺点 耦合性强,移植难 耦合性强,移植难
    展开全文
  • SQLSERVER版本 CREATE VIEW StatusTable AS SELECT A.*,M.[MaTolID],D.[DeptName],G.[MaTolGrpName],D.[DeptID],G.[MaTolGrpID] FROM ( SELECT [status]= case [BaseState] when 'IDLE' then '空...
  • 1、以 sql字符串方式执行存储 ...SQL server 执行存储过程  string sSql = "exec CopyEctToEc 1 ,2"; 转换为Oracle:  sSql = @"declare   v_sql varchar2(1000);  begin  v_sql:='begin C
  • 以一个最简单的查询语句的存储过程为例:mysql 版:********不带参数版********create PROCEDURE queryStaffProc() ----注意此处,就算是没有参数,也要加(),如果有参数输入或者输出,就写在()中BEGINselect * from...
  • Sql Server2005的一个新特性便是我等了很久的Row_Number(),以前用Oracle时用rownumber写分页存储过程很方便:)下面是我做的一个小小的测试,测试我原来在sql server2000下所用的分页存储过程与使用Row_Number()编写...
  • Sql语句 存储过程查 性能测试对比代码。
  • 存储过程实例 存储过程–以基本信息表为基准,使任务表的规划基站名与其一致 DELIMITER $$ DROP PROCEDURE IF EXISTS copySur_station_name $$ CREATE PROCEDURE copySur_station_name () BEGIN /*局部变量...
  • SQL总结:存储过程

    2019-06-25 15:55:29
    存储过程与SQL语句对比 1、提高性能SQL语句在创建过程时进行分析和编译。 存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的存储计划,这样,在执行过程时...
  • 首先先放两个存储过程来进行对比 一、mysql存储过程 CREATE DEFINER=`root`@`%` PROCEDURE `searchProduct`( IN cone VARCHAR ( 30 ), IN ctow VARCHAR ( 30 ), IN page INT, IN size INT ) BEGIN set @...
  • 在oracle中创建存储过程和sybase及sql server下的语法有些不一致之处。下面就此用不同的数据库下存储过程的例子来演示之。---------------------------oracle下: CREATE OR REPLACE ...
  • 原文地址:SQLServer和Oracle,存储过程区别,常用函数对比作者:创造卓越     SQL server 与Oracle开发比较  本文档主要从oracle与sql server语法上进行差异性比较,诸如两者在管理,性能,优化等方面...
  • 一,存储过程 优点: 1,减少网络带宽,按理论存储过程会提高性能. 2,无需重新编译,更改后即可运行,无需重新编译代码 3,由专门的dba写的sql语句更高效 4,安全性,(在传输用户名密码时,可防止注入等情况) ...
  • ---先创建包,再执行存储过程 create or replace package body pk_wtWorkpiece_CountReport  is  procedure Workpiece_CountReport( rst out mytype ,MaTolName in nvarchar2,dtpBegin Date,dtpEnd Date )  is...
  • 1. 存储过程简介我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并...
  • sybaseoracle存储过程的写法对比

    千次阅读 2008-04-18 14:38:00
    在oracle中创建存储过程和sybase及sql server下的语法有些不一致之处。下面就此用不同的数据库下存储过程的例子来演示之。---------------------------oracle下: CREATE OR REPLACE...
  • [基础知识]==============================================================创建存储过程use Northwindgocreate proc myproc_qghboy02(@select_ID varchar(5))asselect * from Customers where CustomerID like %+...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 232
精华内容 92
关键字:

存储过程与sql对比