精华内容
下载资源
问答
  • 利用函数返回结果集

    千次阅读 2021-01-19 07:03:32
    利用函数返回结果集方法总结返回结果集函数可以将变量值传递给函数得到指定的结果集,优点在于灵活控制结果集变量及输出,不用将sql嵌入到页面代码里,业务逻辑如有更改可以直接在数据库中维护。现总结三种方法:...

    利用函数返回结果集方法总结

    返回结果集函数可以将变量值传递给函数得到指定的结果集,优点在于灵活控制结果集变量及输出,不用将sql嵌入到页面代码里,业务逻辑如有更改可以直接在数据库中维护。

    现总结三种方法:OBJECT TYPE、OBJECT TYPE+PIPE ROW、RECORD+PIPE ROW

    OBJECT TYPE

    TYPE定义

    createtypetp_obj_emp asobject(

    empno NUMBER(4),

    ename VARCHAR2(10),

    job VARCHAR2(9),

    mgr NUMBER(4),

    hiredate DATE,

    sal NUMBER(7,2),

    comm NUMBER(7,2),

    deptno NUMBER(2)

    )

    createtypetp_tab_emp istableoftp_obj_emp;

    函数定义

    createorreplacefunctionf_test_record(p_deptno number)returntp_tab_emp as

    v_tab tp_tab_emp;

    begin

    selecttp_obj_emp(empno,ename,job,mgr,hiredate,sal,comm,deptno)

    bulkcollect

    intov_tab

    fromemp

    wheredeptno =p_deptno;

    returnv_tab;

    end;

    调用

    SQL> select * from table(f_test_record(10));

    EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

    ---------- ---------- --------- ---------- -------------- ---------- ---------- ----------

    7782 CLARK MANAGER 7839 09-6月 -81 2450 10

    7839 KING PRESIDENT 17-11月-81 5000 10

    7934 MILLER CLERK 7782 23-1月 -82 1300 10

    已用时间: 00: 00: 00.01

    OBJECT TYPE+PIPE ROW

    TYPE定义

    createtypetp_obj_emp asobject(

    empno NUMBER(4),

    ename VARCHAR2(10),

    job VARCHAR2(9),

    mgr NUMBER(4),

    hiredate DATE,

    sal NUMBER(7,2),

    comm NUMBER(7,2),

    deptno NUMBER(2)

    )

    createtypetp_tab_emp istableoftp_obj_emp;

    函数定义

    createorreplacefunctionf_test_record_pipe(p_deptno number)

    returntp_tab_emp

    pipelinedas

    v_obj tp_obj_emp;

    begin

    forcur in(select*fromemp wheredeptno =p_deptno)loop

    v_obj :=tp_obj_emp(cur.empno,

    cur.ename,

    cur.job,

    cur.mgr,

    cur.hiredate,

    cur.sal,

    cur.comm,

    cur.deptno);

    piperow(v_obj);

    endloop;

    end;

    调用

    SQL> select * from table(f_test_record_pipe(10));

    EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

    ---------- ---------- --------- ---------- -------------- ---------- ---------- ----------

    7782 CLARK MANAGER 7839 09-6月 -81 2450 10

    7839 KING PRESIDENT 17-11月-81 5000 10

    7934 MILLER CLERK 7782 23-1月 -82 1300 10

    已用时间: 00: 00: 00.01

    RECORD+PIPE ROW

    定义包

    createorreplacepackagepkg_pipe_test as

    typet_rec_emp isrecord(

    empno number(4),

    ename varchar2(10),

    job varchar2(9),

    mgr number(4),

    hiredate date,

    sal number(7,2),

    comm number(7,2),

    deptno number(2));

    typet_tab_emp istableoft_rec_emp;

    functionf_test_record_pipe_noc(p_deptno number)returnt_tab_emp

    pipelined;

    end;

    createorreplacepackagebodypkg_pipe_test is

    functionf_test_record_pipe_noc(p_deptno number)returnt_tab_emp

    pipelinedas

    v_rec t_rec_emp;

    begin

    forcur in(select*fromemp wheredeptno =p_deptno)loop

    v_rec.empno :=cur.empno;

    v_rec.ename :=cur.ename;

    v_rec.job :=cur.job;

    v_rec.mgr :=cur.mgr;

    v_rec.hiredate :=cur.hiredate;

    v_rec.sal :=cur.sal;

    v_rec.comm :=cur.comm;

    v_rec.deptno :=cur.deptno;

    piperow(v_rec);

    endloop;

    end;

    end;

    调用

    SQL> select * from table(pkg_pipe_test.f_test_record_pipe_noc(10));

    EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

    ---------- ---------- --------- ---------- -------------- ---------- ---------- ----------

    7782 CLARK MANAGER 7839 09-6月 -81 2450 10

    7839 KING PRESIDENT 17-11月-81 5000 10

    7934 MILLER CLERK 7782 23-1月 -82 1300 10

    已用时间: 00: 00: 00.01

    总结

    对于OBJECT TYPE和OBJECT TYPE+PIPE ROW的方法需要在数据库里定义OBJECT TYPE而RECORD+PIPE ROW需要在包内定义RECORD类型。

    展开全文
  • 如何从MySQL函数返回表?

    千次阅读 2021-01-25 21:56:43
    您不能从MySQL函数返回表。该函数可以返回字符串,整数,字符等。要从MySQL返回表,请使用存储过程,而不是函数。让我们首先创建一个表-mysql>createtableDemoTable696(Idint,Namevarchar(100));使用插入命令在表...

    您不能从MySQL函数返回表。该函数可以返回字符串,整数,字符等。要从MySQL返回表,请使用存储过程,而不是函数。

    让我们首先创建一个表-mysql> create table DemoTable696 (

    Id int,

    Name varchar(100)

    );

    使用插入命令在表中插入一些记录-mysql> insert into DemoTable696 values(100,'Mike');

    mysql> insert into DemoTable696 values(101,'Sam');

    mysql> insert into DemoTable696 values(102,'Adam');

    mysql> insert into DemoTable696 values(103,'Carol');

    使用select语句显示表中的所有记录-mysql> select *from DemoTable696;

    这将产生以下输出-+------+-------+

    | Id   | Name  |

    +------+-------+

    | 100  | Mike  |

    | 101  | Sam   |

    | 102  | Adam  |

    | 103  | Carol |

    +------+-------+

    4 rows in set (0.00 sec)

    以下是从MySQL返回表的查询。

    存储过程如下-mysql> DELIMITER //

    mysql> CREATE PROCEDURE getResultSet(studId int )

    BEGIN

    select *from DemoTable696 where Id=studId;

    END

    //

    mysql> DELIMITER ;

    现在您可以使用调用命令来调用存储过程-mysql> call getResultSet(103);

    这将产生以下输出-+------+-------+

    | Id   | Name  |

    +------+-------+

    | 103  | Carol |

    +------+-------+

    1 row in set (0.00 sec)

    展开全文
  • postgresql 函数返回结果集(一)

    千次阅读 2020-12-24 09:38:51
    Postgres函数返回自定义数据集--返回自定义的TABLE结构 传入整个sql,自定义函数 根据上面2个文章,就可以实现 传入变量 编写sql return table多行数据 当前sql在datagrip界面操作,实现目标: 如果用户选择...

    参考文章:

    1. Postgres函数返回自定义数据集 --返回自定义的TABLE结构
    2. 传入整个sql,自定义函数 

    根据上面2个文章,就可以实现

    1. 传入变量  
    2. 编写sql
    3. return table多行数据

    当前sql在datagrip界面操作,实现目标:

    如果用户选择了开始时间(2015 rq_s)和结束时间(2019 rq_e),则需要变成下面的效果

    sql,范围是最长5年

    ​select d.nf
    from (select regexp_split_to_table(test.nf_all, ',') as nf, length(regexp_split_to_table(test.nf_all, ',')) size
          from (
                 select replace(replace(cast(array_agg(b.*) as varchar), '{"(', ''), ')"}', '') as nf_all
                 from (
                        select a.enf                                           as nf
                             , case when a.enf - a.snf >= 5 then a.snf + 4 end as nf
                             , case when a.enf - a.snf >= 4 then a.snf + 3 end as nf
                             , case when a.enf - a.snf >= 3 then a.snf + 2 end as nf
                             , case when a.enf - a.snf >= 2 then a.snf + 1 end as nf
                             , a.snf                                           as nf
                        from (select cast(${rq_e} as numeric) as enf, cast(${rq_s} as numeric) as snf) a) b) test) d
    where d.size > 0;

    参考sql函数最简单的例子

    CREATE OR REPLACE FUNCTION demo1()
      RETURNS TABLE
              (
                ht_guid VARCHAR
              ) AS
    $body$
    SELECT ht_guid
    from mv_fx_kfly WHERE xm_zt LIKE '2%' LIMIT 10;
    $body$
      LANGUAGE 'sql'
      VOLATILE
      CALLED ON NULL INPUT
      SECURITY INVOKER;

    演变一下(范围我改成了10年):

    
    CREATE OR REPLACE FUNCTION gen_nf(rq_e varchar,rq_s varchar)
      RETURNS TABLE
              (
                NF VARCHAR
              ) AS
    $body$
    select d.nf
    from (select regexp_split_to_table(test.nf_all, ',') as nf, length(regexp_split_to_table(test.nf_all, ',')) size
          from (
                 select replace(replace(cast(array_agg(b.*) as varchar), '{"(', ''), ')"}', '') as nf_all
                 from (
                        select a.enf                                           as nf
                             , case when a.enf - a.snf >= 9 then a.snf + 8 end as nf
                             , case when a.enf - a.snf >= 8 then a.snf + 7 end as nf
                             , case when a.enf - a.snf >= 7 then a.snf + 6 end as nf
                             , case when a.enf - a.snf >= 6 then a.snf + 5 end as nf
                             , case when a.enf - a.snf >= 5 then a.snf + 4 end as nf
                             , case when a.enf - a.snf >= 4 then a.snf + 3 end as nf
                             , case when a.enf - a.snf >= 3 then a.snf + 2 end as nf
                             , case when a.enf - a.snf >= 2 then a.snf + 1 end as nf
                             , a.snf                                           as nf
                        from (select cast(rq_e as numeric) as enf, cast(rq_s as numeric) as snf) a) b) test) d
    where d.size > 0;
    $body$
      LANGUAGE 'sql'
      VOLATILE
      CALLED ON NULL INPUT
      SECURITY INVOKER;

    效果图:

    select gen_nf('2019','2015') as nf;
    select * from gen_xzq('33',2);

     

    展开全文
  • Python函数返回字典?

    2020-12-20 18:13:15
    我是一个Python初学者,我遇到了一个我不理解的函数的输出。我不能给出所有的代码,因为有些代码是我公司的IP代码。在我基本上是使用一个...在如果有更多Python经验的人可以告诉我函数返回在做什么,我可以说它是...

    我是一个Python初学者,我遇到了一个我不理解的函数的输出。我不能给出所有的代码,因为有些代码是我公司的IP代码。在

    我基本上是使用一个由我们的开发人员编写的库从数据仓库中提取度量。我想在另一个应用程序中使用这个度量值,当我得到这个值时,我将把它传递给我自己的数据库。在

    我的问题是我不理解我用来实际推断我想要的值的函数的输出。在

    如果有更多Python经验的人可以告诉我函数的返回在做什么,我可以说它是在构建dict,但我不完全理解如何以及在哪里。我必须加上这是lib中的函数def get(self, **kwargs):

    if 'SchemaName' not in kwargs:

    kwargs['SchemaName'] = self.find_schema_by_params(**kwargs)

    if 'Stat' in kwargs and kwargs['Stat'] not in MWS.VALID_Stat:

    raise MWSException("Incorrect Stat value: %s" % kwargs['Stat'])

    if 'Period' in kwargs and kwargs['Period'] not in MWS.VALID_Period:

    raise MWSException("Incorrect Period value: %s" % kwargs['Period'])

    self._validate_schema(kwargs, MWS.DEFAULT_GET_PARAMETERS)

    self._encode_start_time(kwargs)

    if 'EndTime' not in kwargs:

    if kwargs['StartTime'].startswith('-P'):

    kwargs['EndTime'] = '-P00D'

    else:

    kwargs['EndTime'] = datetime.datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S.000Z")

    return self._mws_action('GetMetricData', **kwargs)['StatisticSeries']

    展开全文
  • (C/C++) 用函数返回一个结构体

    千次阅读 2021-05-21 06:15:13
    注意:如果函数参数里只有一个指向结构体的指针,是无法正确地返回结构体的值的。原因在于在编译的时候,会对入参p产生一个备份_p.参考此文:http://www.cnblogs.com/kaituorensheng/p/3246900.html方法二:返回一个...
  • 是否可以从mysql函数返回多个值?

    千次阅读 2021-01-19 01:36:17
    我认为它不优雅,我确信这有局限性,但它适用于简单的情况还有必要创建分裂函数,因为Mysql没有这个函数:首先编辑你的功能.CREATE FUNCTION yourFunctionWith2valuesForReturning()BEGINDECLARE var1 VARCHAR(255);...
  • 函数返回类型

    千次阅读 2021-01-13 19:42:52
    函数返回值与首部定义的类型一样,如果不一样,则主动将返回值强制转换成函数首部定义的类型。 2、没有定义类型时默认为int型,默认返回值为int可以省略。【本题的情况就应该是这样】 3、c/c++ 规定,【输出输入格式...
  • matlab 函数返回多个值--样例

    千次阅读 2021-04-18 03:25:33
    matlab 函数返回多个值--样例发布时间:2018-02-14 19:52,浏览次数:2062, 标签:matlab目录一、matlab的函数文件返回多个值写法二、简单的例子三、 结果截图一、matlab的函数文件--返回多个值--写法为:1....
  • C++ 函数返回数组处理方法

    千次阅读 2020-12-22 14:31:24
    最近在通过函数返回数组时踩到了一些坑,在此记录一下。 首先C++函数的返回类型没有“数组”这一结构,因此一般情况下我们会采用指针去接受数组的首地址来进行返回。另外由于函数体内定义的变量均为局部变量,局部...
  • C++ 函数返回char*

    2021-03-23 10:32:01
    在函数内建立的局部变量在函数结束后会被销毁,所以如何从函数返回函数内新建的char*是一个问题 看一个例子: char* get_char_1(){ string s = "abc"; return (char*)s.c_str(); } int main(){ char* temp = ...
  • MySQL的sum函数返回的类型

    千次阅读 2021-01-19 01:25:12
    (Before MySQL 5.0.3, SUM() and AVG() return DOUBLE for all numeric arguments.) 外链网址已屏蔽 原来MySQL 5.0.3之前的版本,sum函数返回的是DOUBLE类型 回头检查一下MySQL的版本: DataBaseA: 5.1.44 Source ...
  • Python函数返回一个奇怪的字符串

    千次阅读 2021-01-29 11:28:54
    我在努力学习Python时,一直在研究一本名为《程序员练习》(Exercises for Programmers)的书。在在练习8中,我遇到了一些麻烦;我要编写代码,提示有多少人想要订购披萨,每人多少片,然后它必须根据总片数(每个人*片...
  • 函数返回一个对象-python

    千次阅读 2021-02-11 04:43:46
    这个疑问的起源在于:a=open(“test.txt”,”w”)a.close()为什么a会有一个方法(.close),因为open是一个函数经过学习,了解到函数可以返回一个对象 -.-print("测试函数返回一个对象")def nameandage(x,y):class man...
  • 我不能从函数中得到返回值True | False。我做错什么了?在剧本大致是这样的。在class getLogs:IAM=getpass.getuser()SRC_LOG_DIR='/server/log/session/'DST_LOG_DIR="/home/${IAM}/LOGS/"def __init__(self):parser...
  • 物质冷凝冷却量制冷器吸的热剂在收被,语言函制冷的目的人工实现。密级不同不同不同不同保管不同部件载体期限阶段,数返组卷的文分别件应。回类病人补液体重良伴对营腹泻养不宜按静脉计算实际。...
  • void*作为函数返回类型(C语言)

    千次阅读 2021-05-22 17:49:17
    void*作为函数返回类型的情况 导入 C语言中有一种返回值类型比较特殊,就是void*,void作为返回值我们都很熟悉了,但是一般情况void*作为返回值的情况很少见,因此有些童鞋可能对相关方面有疑惑,当初我也是在一道...
  • Python如何从函数返回多个值?

    千次阅读 2021-02-03 21:48:37
    因为getName中的return语句指定了多个元素:def getName(self):return self.first_name, self.last_namePython将返回一个...让我们使用一个返回多个值的简单函数:def foo(a, b):return a, b您可以查看使用Python...
  • 从Matlab函数返回多个输出变量

    千次阅读 2021-04-18 03:25:54
    C} if they're not going to be the same size, but then it won't display anyway end 或者如果你真的想要我猜你可以编写一个你在函数上调用的包装器函数,它会显示你可以在任何函数上使用的所有三个函数....
  • 1. 使用async定义方法,该方法会返回一个Promise对象 async function main(){ } console.log(main()); 2.如果返回结果为非Promise对象,则返回一个PromiseState为fulfilled,PromiseResult为返回结果的Promise 3....
  • 我们知道,当函数运行结束的时候,函数内部的局部变量就会消失,这C/C++里没有任何疑问的规定,但是今天我在写代码的时候突然就想到了一个相当纠结的问题,那就是当我一个函数返回类型是一个对象的时候,以我当时...
  • 在solidity 0.4 时代,是不支持返回struct的。但现在solidity已经进入了0.8的版本,这个版本是支持直接返回struct与struct array的,以下为具体做法。
  • 具有返回主菜单功能的函数 int fanhuizhucaidan(){ if ( 设定的退出条件 ) { return 1;/*一旦条件成立,分函数向主函数返回一个值1,同时跳出分函数*/ } } 主函数 int main(){ loop: 此行放主菜单函数 ...
  • [已解决]python sort()函数返回None

    千次阅读 2021-01-23 17:13:39
    最近在跟着coursera上面Dr.Chuck课程《Python Data Structures》入门python,遇到关于list结构使用sort函数排序的一点问题。 (btw:Dr.Chuck真的不要太有魅力啊,感觉自己本来对编程无感的的弱鸡都开始喜欢上了。向...
  • 1.编写函数返回形式参数(一个正整数)是否为素数。主函数中输入两个整数a,b,输出[a,b]之间所有素数。 输入样例: 100 110 输出样例: 101 103 107 109 代码如下 #include <stdio.h> void judge(int n) { int...
  • 该数是素数时,函数返回字符串 “yes!”,否则函数返回字符串 “no!”,并在主函数中输出。 例如,输入13,返回yes!;输入8,返回no! 请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干...
  • pandas使用nsmallest函数返回特定数据列中前N个最小值(搜寻最小的n个元素)、pandas使用nsmallest函数返回特定数据列中前N个最小值所对应的数据行 目录 pandas使用nsmallest函数返回特定数据列中前N个最小值、...
  • 若是则函数返回1,主函数中输出YES,否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。 例如,字符串LEVEL,而字符串123312就不是回文。 请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花...
  • 在组件中接收props参数的时候,如果传过来的参数是Object或者Array类型,则defalut这里应该用一个函数返回,否则会报错: Invalid default value for prop “slides”: Props with type Object/Array must use a ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,057,350
精华内容 1,622,940
关键字:

函数返回

友情链接: chain.rar