zoukankan      html  css  js  c++  java
  • 存储过程和自定义函数的区别

    1:

    1)存储过程,功能强大,可以执行包括修改表等一系列数据库操作,也可以创建为 SQL Server 启动时自动运行的存储过程。

    自定义函数,用户定义函数不能用于执行一组修改全局数据库状态的操作。

    2)存储过程,可以使用非确定函数。

    自定义函数,不允许在用户定义函数主体中内置非确定函数。

    3)存储过程,主要是返回一个int状态结果,也可返回记录集。

    自定义函数,可以返回表变量。

    关于这个,很容易糊涂。存储过程,可以使用这样的形式来返回N多的结果:


    create procedure sp1  
    as   
    begin  
    select name, fid_fk from table_1  
    print '111'  
    select testname ,fid  from table_2  
    end  
    create procedure sp1 as begin select name, fid_fk from table_1 print '111' select testname ,fid from table_2 end

    [表1]

    而这个结果,只能以两种形式被使用:insert into table_3(name, fid_fk) exec sp1; 或者 EXEC sp1.

    不过,对于自定义函数,它必须指定定义为返回值为table类型的数据@t,并且在代码中显式的向该table @t中insert;或者,只是制定返回值为table类型,不指定return 的对象变量,直接return 该表。即:


    create function fn1()   
    returns table  
    as  
    return select fid, testname  from table_2   
    create function fn1() returns table as return select fid, testname from table_2

    [表2]

    或者


    create function fn1()   
    returns @v table  
    (fid int primary key not null,  
    testname nchar(10))  
    as  
    begin  
      insert into @v select  fid,testname  from table_2   
    end  
    create function fn1() returns @v table (fid int primary key not null, testname nchar(10)) as begin insert into @v select fid,testname from table_2 end 
    [表3]

    在这个方面,最能够看出存储过程和自定义函数的区别:前者是一系列功能的集合,可以返回int值,或者返回查询的结果集合,但是只是作为一系列功能的副产品;而后者,就是为了返回值而创建的。在【附录】中详细说明自定义函数的使用。

    4)存储过程,其返回值不能被直接引用;而是必须被使用为exec sp1或者 insert into table 的形式使用。

    自定义函数,其返回值可以被直接引用。

    5)存储过程,用 EXECUTE 语句执行。

    自定义函数,在查询语句中调用。

    【附录】最后补充一下。

    我ft,破csdn,整个格式都不会,不知道干嘛的。不过还是言归正传。

    一般说来,自定义函数就有这三个用处:

    1,如上[表2],返回一个in-line table value;

    2,如上[表3],返回一个multi statement table value;

    3,仅仅返回一个任意的变量,比如:


    Create Function CubicVolume  
    (@CubeLength decimal(4,1),@CubeWidth decimal(4,1),@CubeHeight decimal(4,1) )  
    Returns decimal(12,3)  
    As  
    Begin  
    Return (@CubeLength * @CubeWidth * @CubeHeight)  
    End 
    原文地址:http://blog.csdn.net/sandyzhs/article/details/3049678#

    2.

    SQL中的存储过程,函数,视图有什么区别?


    存储过程是预先写好并编译好的SQL程序
    函数预先写好的代码片断,有系统函数,也有自定义函数
    视图是预先建立的查询语句,用起来就像使用表一样了

    存储过程需要单独执行,函数可以随处调用,视图是一种直观的表现方式~

    原文地址:http://zhidao.baidu.com/question/130756796.html


    3.

    存储过程和自定义函数的区别 - Jackie - 技术宅改变世界!
  • 相关阅读:
    【2】通过Ajax方式上传文件(图片),使用FormData进行Ajax请求
    【1】mongoDB 的安装及启动
    第一篇博客
    Java Integer 进制转化的实现(附源码),对模与补码的理解
    筛法求素数(普通筛法与欧拉筛法) 这是个问题
    字典的拼接方法
    使用Selenium抓取百度指数一
    正则表达式30分钟入门教程
    微博抓取尝试
    __call__方法的最简要说明
  • 原文地址:https://www.cnblogs.com/zxw0004/p/4924495.html
Copyright © 2011-2022 走看看