希望这里能成为我工作成长过程的积累。。

发布新日志

  • 函数与已存储过程

    2007-06-10 21:56:22

    已存储程:
    是一段早已存入的代码,它可以接受传递的参数,并完成一系列复杂的任务。  
    有价值在于它们是已编译好的过程:它们迅速而有效的实际任务,因为数据库优化器已经为这段代码设计好了执行模式。
    一些要点:
    1.MSQL允许指定程序的版本号,格式为 procdedure_name;1,一代表版本号的数字。就这样允许访问同一个程序多个不同的版本;
    2.可本地或全局的临时程序,加#或##号,临时的只存在用户持续会话或创建他们的处理会话内,会话结束后,临时程序会自动删除;
    3.MSQL最多可以接受1024个参数,通常用@和任何可接受的数据类型表示。(游标数据类型的参数必须同时是VARYING和OUTPUT);
    4.输入参数的值必须由用户或调用程序提供,参数也可以是默认值,以使程序在没有用户或程序提供参数时也可以执行;
    5.使用OUTPUT关键字可以将参数指定为返回参数。存储于返回参数中的值,可以通过EXEC[UTE]命令返回变量,传给任何调用它的程序。输出参数可以是除TEXT和IMAGE之外的任何数据类型。

    函数:
    是SQL99命令集中一种特殊类型的命令字,它就是返回单个值的由单个词构成的命令,函数值由输入的参数决定。
    聚集函数:对一组值进行处理,但是返回的是单个的归纳值
    标量函数:对单个值进行处理,并返回基于输入值的单个结果。有些标量函数不需要任何参数,如CURRENT_TIME
    自定义函数的一些要点:
    1.通过表数据类型,函数可以返回多个函数值;
    2.自定义函数都必须申明一个或多个由用户提供的参数,除TIMESTAMP数据类型外,全部都可以作为参数;
    3.一个内联函数的T-SQL代码部分可以只是一个SELECT语句。

       以上内容都是在SQL 技术手册上看到,终于对函数和已存储过程有了浅析,但是还是区别不是很开,网上也有不少的相关解释都是提到返回值的问题,也没有什么权威的说法,看来要工作了慢慢了解才能真正知道他们区别了!

    网上的一段解释,好像有点道理的,可以参考:
       如果业务量较小的情况下,采用哪种方式都是可以的。如果数据量较大而且业务复杂最好还是用存储过程,因为当你在程序中调用存储过程时实际上传过去的是几个参数,如果你在程序中写的话,传递的是SQL语句,会增加网络的负担.不过有些简单的东西还是要写在前台程序中,因为我们也不能忽略了客户端计算机的性能,否则是一种资源的浪费。

     

Open Toolbar