精华内容
下载资源
问答
  • 内嵌函数可用于实现参数化视图的功能下面就让我们一起来了解一下SQL内嵌用户定义函数的使用,如果您您感兴趣的话,不妨一看。标签:SQL内嵌用户定义函数 SQL内嵌用户定义函数在我们使用SQL 数据库中,用途...
    • 摘要: 内嵌函数可用于实现参数化视图的功能,下面就让我们一起来了解一下SQL内嵌用户定义函数的使用,如果您您感兴趣的话,不妨一看。
    • 标签: SQL内嵌用户定义函数

    SQL内嵌用户定义函数在我们使用SQL 数据库中,用途很广泛。下面就为您详细介绍一些SQL内嵌用户定义函数方面的知识,供您参考。

    SQL内嵌用户定义函数
    SQL内嵌用户定义函数是返回 table 的用户定义函数的子集。内嵌函数可用于实现参数化视图的功能。

    请看下面的视图:

    1. CREATE VIEW vw_CustomerNamesInWA AS   
    2. SELECT CustomerID, CompanyName   
    3. FROM Northwind.dbo.Customers   
    4. WHERE  Region  =  'WA'   

    可创建更通用的版本 vw_CustomerNamesInRegion,方法是将 WHERE Region = 'WA' 替换为 WHERE Region = @RegionParameter 并让用户指定感兴趣的查看区域。然而,视图不支持在 WHERE 子句中指定的搜索条件的参数。

    内嵌用户定义函数可用于支持在 WHERE 子句中指定的搜索条件的参数。下面是使用户得以在其选择中指定区域的函数示例:

    1. CREATE FUNCTION fn_CustomerNamesInRegion   
    2. ( @RegionParameter nvarchar(30) )   
    3. RETURNS table   
    4. AS   
    5. RETURN (   
    6. SELECT CustomerID, CompanyName   
    7. FROM Northwind.dbo.Customers   
    8. WHERE  Region  = @RegionParameter   
    9. )   
    10. GO   
    11. -- Example of calling the function for a specific region   
    12. SELECT *   
    13. FROM fn_CustomerNamesInRegion(N'WA')   
    14. GO  

    内嵌用户定义函数遵从以下规则:

    RETURNS 子句仅包含关键字 table。不必定义返回变量的格式,因为它由 RETURN 子句中的 SELECT 语句的结果集的格式设置。

    function_body 不由 BEGIN 和 END 分隔。

    RETURN 子句在括号中包含单个 SELECT 语句。SELECT 语句的结果集构成函数所返回的表。内嵌函数中使用的 SELECT 语句受到与视图中使用的 SELECT 语句相同的限制。

    内嵌函数还可用于提高索引视图的能力。索引视图自身不能在其 WHERE 子句搜索条件中使用参数,针对特定用户的需要调整存储的结果集。然而,可定义存储与视图匹配的完整数据集的索引视图,然后在包含允许用户调整其结果的参数 化搜索条件的索引视图上定义内嵌函数。如果视图定义较复杂,则生成结果集所要执行的大多数工作都涉及在视图上创建聚集索引时生成聚合或联接多个表。之后如 果创建引用视图的内嵌函数,则该函数可应用用户的参数化筛选,从结果集中提取由 CREATE INDEX 语句生成的特定行。在执行 CREATE INDEX 时复杂的聚合和联接进行一次,随后引用内嵌函数的所有查询都从简化的存储结果集中筛选行。例如:

    定义将所有销售数据聚合到结果集的视图 vw_QuarterlySales,该结果集按季度报告所有商店的汇总销售数据。

    在vw_QuarterlySales上创建聚集索引以具体化包含汇总数据的结果集。

    创建筛选汇总数据的内嵌函数:

    1. CREATE FUNCTION fn_QuarterlySalesByStore   
    2. (   
    3. @StoreID int   
    4. )   
    5. RETURNS table   
    6. AS   
    7. RETURN (   
    8. SELECT *   
    9. FROM SalesDB.dbo.vw_QuarterlySales   
    10. WHERE  StoreID  = @StoreID   
    11. )  

    然后用户可从内嵌函数进行选择以获得其特定商店的数据:

    1. SELECT *   
    2. FROM fn_QuarterlySalesByStore( 14432 )  

    满足在第4步发出的查询所需的大多数工作将按季度聚合销售数据。该工作在第2步进行一次。第4步中的每个 SELECT 语句都使用函数 fn_QuarterlySalesByStore 筛选出用户的某个商店特有的聚合数据。

    展开全文
  • 下面给出了zebra关于线程管理的相关函数的简要功能介绍。 1.1.1 thread_master_create () 为创建一个新的thread_master结构体动态开辟一块内存空间。 1.1.2 thread_list_add () 在list双向链表尾部插入一个...

    下面给出了zebra关于线程管理的相关函数的简要功能介绍。

    1.1.1 thread_master_create ()

    为创建一个新的thread_master结构体动态开辟一块内存空间。

    1.1.2 thread_list_add ()

    list双向链表尾部插入一个新的thread

    1.1.3 thread_list_add_before ()

    在函数参数point所指向的thread前面插入一个新的thread

    1.1.4 thread_list_delete ()

    删除参数中指定的thread

    1.1.5 thread_add_unuse ()

    向指定thead_master中的unused链表尾部插入新thread

    1.1.6 thread_list_free ()

    从内存中释放掉指定thread_master中的指定thread链表所占空间。

    1.1.7 thread_master_free ()

    彻底释放指定thread_master所占内存空间。

    1.1.8 thread_trim_head ()

    若指定thread链表中非空,删除该链表头指针所指thread,并将其返回,即从线程队列中取出一个线程。

    1.1.9 thread_empty ()

    判断指定thread链表是否为空。

    1.1.10 thread_timer_remain_second ()

    得到指定线程的剩余时间。

    1.1.11 thread_get ()

    若指定thread_master中的unuse链表非空,从该队列中取出一个thread,根据参数初始化并返回之。否则,给该thread_master多开辟一块空间给新的thread,根据参数初始化该thread并返回之。

    1.1.12 thread_add_read ()

    根据所给参数在指定thread_master中添加并初始化一个read类型的thread并返回之。

    1.1.13 thread_add_write ()

    根据所给参数在指定thread_master中添加并初始化一个write类型的thread并返回之。

    1.1.14 thread_add_timer ()

    根据所给参数在指定thread_master中添加并初始化一个timer类型的thread。若timer链表不要求排序,则直接返回新thread,若要求排序,则将新thread插入到队列的相应位置后再返回之。

    1.1.15 thread_add_event ()

    根据所给参数在指定thread_master中添加并初始化一个event类型的thread并返回之。

    1.1.16 thread_cancel ()

    删除指定thread,删除后将其类型置为THREAD_UNUSED,并将其插入到该thread_masterunuse链表中。

    1.1.17 thread_cancel_event ()

    将指定thread_masterevent链表中与参数中arg相匹配的thread删除。

    1.1.18 thread_timer_wait ()

    找出指定thread_mastertimer链表中最小的剩余时间并将其返回。

    1.1.19 thread_run ()

    将指定thread的值赋给thread类型的fetch,然后将其类型置为THREAD_UNUSED,并将其插入unuse链表,返回fetch

    1.1.20 thread_process_fd ()

    将指定thread链表中的元素取出插入到该thread_masterready链表中,返回该链表中插入元素的个数。

    1.1.21 thread_fetch ()

    若指定thread_masterevent队列非空取出其头元素并用run函数处理。取出并用run函数处理timer队列中每一个之前创建的线程。若指定thread_masterready队列非空取出其头元素并用run函数处理。拷贝该thread_master的文件描述符。将readwrite链表插到ready链表中,再从ready链表取头元素用run函数处理。如此无限循环下去直到所有进程都处理完。

    1.1.22 thread_consumed_time ()

    得到该进程所耗费的时间。

    1.1.23 thread_call ()

    执行该thread中的功能函数,如果该thread持续时间超过CPU规定的独占时间,发出警告。

    1.1.24 thread_execute ()

    根据参数创建一个event类型的thread并用thread_call()函数对其进行处理。

     

    展开全文
  • pl/sql 编程实现类似于Java中Stringsplit函数功能  只是类似,功能没有Java中Stringsplit函数功能强大,只是满足简单有应用,即把字符串按指定分隔符号截取,并返回数组。 下面是代码: --定义T_CHAR类型 ...

          pl/sql 编程实现类似于Java中String的split函数功能

          只是类似,功能没有Java中String的split函数功能强大,只是满足简单有应用,即把字符串按指定的分隔符号截取,并返回数组。

    下面是代码:

    --定义T_CHAR类型
    create type ty_str_split as table of varchar2(100);
    	  /**
           * 函数名:str_split
           * 参  数:p_str 待截取的字符串(目标字符串:以某种特定的字符分隔的字符串)
           *         p_delim 分隔字符串
           * 返回值:为T_CHAR类型,类似一维数组
           * 功能:实现类似于JS中split函数功能
           */
          function str_split  (p_str in varchar2
                                         ,p_delim in varchar2 default ',') 
            return T_CHAR as
            v_str      varchar2(32767);
            v_fields   pls_integer;
            v_substr   varchar2(32767);
            v_return   T_CHAR;
          begin
            v_str := p_delim||trim(p_delim from p_str)||p_delim;
            v_fields := length(v_str) - length(replace(v_str,p_delim,'')) - 1;
    
            for i in 1..v_fields loop
              v_substr := substr(v_str
                                ,instr(v_str,p_delim,1,i)+1
                                ,instr(v_str,p_delim,1,i+1) - instr(v_str,p_delim,1,i) -1);
              v_return(i) := v_substr;
            end loop;
            return v_return;
          end;

     

    create or replace procedure test1 as
        v_array T_CHAR;
    begin
        v_array:=str_split('1a,2b,3c,4d',',');
        for i in 1..v_array.count loop
             dbms_output.put_line('v_array('||i||')='||v_array(i));
        end loop;
    end test1;

     

    展开全文
  • 今天又个兄弟求助,数据库里一个表有数据如下: no name 1 a 2 b 3 c ...对于这种构造数据,是分析函数的强项,下面来做个试验: create table t (no number,name varchar(2)); insert into t va
    今天又个兄弟求助,数据库里一个表有数据如下:
    no  name
    1    a
    2    b
    3    c
    4    d
    如何用一个sql显示如下结果:
    ab
    ac
    ad
    bc
    bd

    cd


    对于这种构造数据,是分析函数的强项,下面来做个试验:

    create table t (no number,name varchar(2));
    insert into t values(1,'a');
    insert into t values(2,'b');
    insert into t values(3,'c');
    insert into t values(4,'d');
    commit;

    实现1:
    select decode(h2, '', '', h1 || h2) b,
           decode(h3, '', '', h1 || h3) c,
           decode(h4, '', '', h1 || h4) d
      from (select name h1,
                   lead(name, 1) over(order by name) h2,
                   lead(name, 2) over(order by name) h3,
                   lead(name, 3) over(order by name) h4
              from t) ;

    B    C    D
    ---- ---- ----
    ab   ac   ad
    bc   bd
    cd

    实现2:相对实现1对于行进行了转换
    with tt as(
    select name h1,
                   lead(name, 1) over(order by name) h2,
                   lead(name, 2) over(order by name) h3,
                   lead(name, 3) over(order by name) h4
              from t
    )
    select * from (select decode(h2, '', '', h1 || h2) b from tt
    union
    select decode(h3, '', '', h1 || h3) c from tt
    union
    select decode(h4, '', '', h1 || h4) d from tt)
    where b is not null;

    B
    ----
    ab
    ac
    ad
    bc
    bd
    cd


    实现3:也可以不用分析函数

    select a.name || b.name from t a, t b where a.no < b.no;


    附录,一句SQL实现9*9乘法口诀:

    select r1 || '*' || r1 || '=' || r1 * r1 A,
    decode(r2, '', '', r2 || '*' || r1 || '=' || r2 * r1) b,
    decode(r3, '', '', r3 || '*' || r1 || '=' || r3 * r1) C,
    decode(r4, '', '', r4 || '*' || r1 || '=' || r4 * r1) D,
    decode(r5, '', '', r5 || '*' || r1 || '=' || r5 * r1) E,
    decode(r6, '', '', r6 || '*' || r1 || '=' || r6 * r1) F,
    decode(r7, '', '', r7 || '*' || r1 || '=' || r7 * r1) G,
    decode(r8, '', '', r8 || '*' || r1 || '=' || r8 * r1) H,
    decode(r9, '', '', r9 || '*' || r1 || '=' || r9 * r1) I
    from (select level r1,
    lag(level, 1) over(order by level) r2,
    lag(level, 2) over(order by level) r3,
    lag(level, 3) over(order by level) r4,
    lag(level, 4) over(order by level) r5,
    lag(level, 5) over(order by level) r6,
    lag(level, 6) over(order by level) r7,
    lag(level, 7) over(order by level) r8,
    lag(level, 8) over(order by level) r9
    from dual
    connect by level < 10);

    展开全文
  • linux下epoll函数

    2018-06-23 16:48:18
    epoll是TCP/IP网络编程的IO服用方法之中一种优于select的函数,相比select,它有两个优点: ...下面介绍epoll服务器端实现中需要的三个函数,希望各位结合epoll函数的优点理解这些函数的功能。 epoll_create:...
  • 在python返回函数的结构中,相关参数和变量都保存在返回的函数中。这种程序结构称为“闭包(Closure)”,拥有极大的威力。 下面实例实现计数器功能: def create_counter(): def f(): x = 0 while True: x +...
  • 实现 void SetStation(char* station, bool bOpenDoor,StopStationState StationState, bool bShowStopStationPage) 实现二三四三个参数的功能,,第二个参数要求实现能够控制图形界面开关门,第三个是实现三个站点...
  • 简单存储函数

    2018-06-04 15:16:38
    ---在java语言中,经常可以在方法中调用方法,使得某些常用而代码固定的功能不用每次编写,显得很简单,在sql中也有这样的方法,可以将结果当成一个参数直接使用,下面就来一个简单的求和的函数例子入门。...
  • // EA初始化、切换品种时候运行一次int OnInit() { // 设置定时器, 每 2 秒执行一... // 下面两句代码会开启对象创建和删除交互功能 //--- enable object create events ChartSetInteger(ChartID(),CHART_...
  • sum函数在SQL Server 2005中,添加了 over(partition by )的功能。 在2012、1014中添加了 over(partition by order by )的功能,以及rows/range功能。 下面是具体的例子: if object_id('test') is not null...
  • 对于字符设备驱动,当file_operations注册好了之后,这只是实现了该驱动的内部... 创建设备节点是device_create的功能之一,下面主要分析该功能的主要流程。 以下基于Linux2.6.32.2 device_create函数分析: ...
  • MySQL 几乎模拟了 Oracle,SQL Server等商业数据库大部分功能函数。但很可惜,到目前版本(5.1.33)为止,仍没有实现ROWNUM这个功能下面介绍几种具体实现方法.建立实验环境如下mysql> create table tbl (-&...
  • 本文主要讲述Oracle分析函数之Rank函数的用法最近接触到Oracle这个功能强大而灵活的函数。这个函数特别适用于各种统计查询,下面就来说一说。首先存在 product 表SELECT p.create_time, p.name, p.service_evaluate_...
  • 这个叫做ALL_ADD的函数的目的是要将一组real的数据加起来,跟SUM( )其实功能是一样的 CREATE OR REPLACE FUNCTION all_add_state( pre real, next real) RETURNS real AS $BODY$ SELECT CASE WHEN $2 IS ...
  • 排名函数

    2019-09-23 05:56:56
    排名函数是Sql Server2005新增的功能下面简单介绍一下他们各自的用法和区别。我们新建一张Order表并添加一些初始数据方便我们查看效果。 CREATE TABLE [dbo].[Order]( [ID] [int] IDENTITY(1,1) NOT ...
  • 下班临时有个小的功能,也都算不上功能。在 Android Studio 中运行 Java 的 main 函数,想想好像也是没有问题的,毕竟也是使用 Java 来实现的 app。 想着应该不难,但是还是被打脸了,run 的时候提示了下面的错误,...
  • return 1 # 函数下面的代码不会被执行,因为return除了能够将数据返回之外,还有一个隐藏的功能:结束函数 print("—2---") return 2 print("—3---") 总结1: 一个函数中可以有多个return...
  • Oracle定制功能十分强大。前几天在碰到一个问题时候,查询文档发现,oracle不但允许...下面是我使用自定义聚集函数建立一个字符串“sum”小例子。 类型声明: CREATE OR REPLACE TYPE SUM_LINK AS OBJECT (...
  • Oracle日期函数

    2019-10-01 21:16:29
    Oracle日期函数用于对Oracle数据库中的日期及时间进行处理,下面就为您详细介绍Oracle日期函数的用法,希望对您能有所启迪。 (1)SYSDATE和TRUNC 两个Oracle日期函数取Oracle服务器系统的日期和截掉小数部分...
  • Oracle日期函数简介

    2020-12-16 07:22:09
    Oracle日期函数用于对Oracle数据库中的日期及时间进行处理,下面就为您详细介绍Oracle日期函数的用法,希望对您能有所启迪。 (1)SYSDATE和TRUNC 两个Oracle日期函数取Oracle服务器系统的日期和截掉小数部分的功能...
  • Oracle定制功能十分强大。...下面是我使用自定义聚集函数建立一个字符串“sum”小例子。 类型声明:CREATE OR REPLACE TYPE SUM_LINK AS OBJECT ( STR VARCHAR2(30000), STATIC FUNCTION ODC...
  • 这四个(RANK、DENSE_RANK、NTILE、ROW_NUMBER)函数,都是用来对数据库中的... 下面介绍一下这四个函数的功能和用法: 首先创建一个Student表 CREATE TABLE Student (  StudentIDint,  ClassIDint,  Markint  );
  • 对字符串的“sum”——在Oracle中自定义聚集函数的例子 Oracle的定制功能十分强大。前几天在碰到一个问题的时候,查询文档发现,oracle不但允许用户定制自己的函数,还可以定制自己的聚集函数和分析函数。 下面是我...
  • 表值函数

    2015-12-01 14:02:00
    最近在SQL SERVER 项目中使用了一...我们下面要实现一个功能: 传入 1,2,3,4,5 这样字符串参数, 返回一个记录集合 1 2 3 4 5  函数实现如下: 1 CREATE Function Usf_Split...
  • Oracle定制功能十分强大。前几天在碰到一个问题时候,查询文档发现,...下面是我使用自定义聚集函数建立一个字符串“sum”小例子。 SQL> CREATE OR REPLACE TYPE T_LINK AS OBJECT ( 2 STR VARCHAR2(30000),

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 390
精华内容 156
关键字:

下面create函数的功能