精华内容
下载资源
问答
  • create or replace procedure jsl (isNowMonth in varchar2, place_no in varchar2, nowMonth in varchar2, preYear in varchar2, thisYear in varchar2, ...copyerName in varchar2, ... select zc.copyer,sum(case ...
  • 通过测试发现值的个数是对应上。[color=#FF0000]也就说不存在个数不足问题[/color]。 [/size][/b] [b][size=14px]网友有说字段类型不匹配也会有这个提示,如何进行转换或者避免呢[/size][/b]
  • 此查询返回我想要内容(来自查询逗号分隔)SELECT emp_id, LISTAGG(HOBBIES, ',') WITHIN GROUP (ORDER BY HOBBIES)FROM employee_listWHERE emp_id = 123456GROUP BY emp_id;结果:Squash,Tennis,Walking初步...

    此查询返回我想要的内容(来自查询的逗号分隔值)

    SELECT emp_id, LISTAGG(HOBBIES, ',') WITHIN GROUP (ORDER BY HOBBIES)

    FROM employee_list

    WHERE emp_id = 123456

    GROUP BY emp_id;

    结果:

    Squash,Tennis,Walking

    初步数据:

    emp_id hobbies

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

    123456 Walking

    123456 Tennis

    123456 Squash

    000001 Bowling

    000002 Tennis

    000002 Soccer

    当我尝试将其转换为这样的存储过程时:

    CREATE OR REPLACE PROCEDURE GET_EMP_ID_FOR_HOBBIES(id NUMBER)

    AS

    x varchar(255);

    BEGIN

    SELECT emp_id, LISTAGG(HOBBIES, ',') WITHIN GROUP (ORDER BY HOBBIES)

    INTO x

    FROM employee_list

    WHERE emp_id = id

    GROUP BY HOBBIES;

    END;

    它在编译时返回以下错误

    错误(6,8):PL / SQL:ORA-00947:值不够

    如果它是插入物,我会理解它。我做错了什么?

    1

    投票

    您正在选择两个列表达式emp_id和listagg()结果 - 但您只选择单个变量x。

    您需要两个变量,并在into子句中列出,以匹配列表达式。

    ...

    AS

    l_emp_id employee_list.emp_id%TYPE;

    l_hobbies varchar2(4000); -- has to be big enough

    BEGIN

    SELECT emp_id, LISTAGG(HOBBIES, ',') WITHIN GROUP (ORDER BY HOBBIES)

    INTO l_emp_id, l_hobbies

    FROM employee_list

    WHERE emp_id = id

    GROUP BY emp_id;

    ...

    如果你确实想要一个变量,那么你需要一个列表达式 - 要么删除其中一个,因为你真的不需要另一个ID副本:

    ...

    AS

    l_hobbies varchar2(4000); -- has to be big enough

    BEGIN

    SELECT LISTAGG(HOBBIES, ',') WITHIN GROUP (ORDER BY HOBBIES)

    INTO l_hobbies

    FROM ...

    或者可能不太可能,将ID和爱好连接成单个字符串值。当然,x变量必须足够大以容纳组合字符串。

    这取决于您在局部变量中使用它们后计划对值进行的操作。

    展开全文
  • 并确保在同一事务处理种对相同数据的两次查询看到的是相同的值。 值范围: TRUE | FALSE 默认值: FALSE row_locking: 说明: 指定在表已更新或正在更新时是否获取行锁。如果设置为 ALWAYS, 只有在表被更新后才获取...
  • 使用new运算符时必须已知数据类型,new运算符会向系统堆区申请足够的存储空间,如果申请成功,就返回该内存块的首地址,如果申请不成功,则返回零。 new运算符返回的是一个指向所分配类型变量(对象)的指针。对...

    我们在学习C++的过程中,通常会遇到指针和new和delete的,这充分说明了它的重要性,今天小编就为大家带来C++中new和delete的用法,希望对你学习有帮助!

     

    一、new用法

    1.  开辟单变量地址空间

    使用new运算符时必须已知数据类型,new运算符会向系统堆区申请足够的存储空间,如果申请成功,就返回该内存块的首地址,如果申请不成功,则返回零值。 

    new运算符返回的是一个指向所分配类型变量(对象)的指针。对所创建的变量或对象,都是通过该指针来间接操作的,而动态创建的对象本身没有标识符名。 

    一般使用格式: 

            格式1:指针变量名=new 类型标识符; 

            格式2:指针变量名=new 类型标识符(初始值); 

            格式3:指针变量名=new 类型标识符 [内存单元个数]; 

    说明:格式1和格式2都是申请分配某一数据类型所占字节数的内存空间;但是格式2在内存分配成功后,同时将一初值存放到该内存单元中;而格式3可同时分配若干个内存单元,相当于形成一个动态数组。例如: 

            1)new int;  //开辟一个存放数组的存储空间,返回一个指向该存储空间的地址.int *a = new int 即为将一个int类型的地址赋值给整型指针a.

            2)int *a = new int(5) 作用同上,但是同时将整数赋值为5。

     2.  开辟数组空间

    对于数组进行动态分配的格式为: 

            指针变量名=new 类型名[下标表达式]; 

            delete [ ] 指向该数组的指针变量名; 

    两式中的方括号是非常重要的,两者必须配对使用,如果delete语句中少了方括号,因编译器认为该指针是指向数组第一个元素的指针,会产生回收不彻底的问题(只回收了第一个元素所占空间),加了方括号后就转化为指向数组的指针,回收整个数组。 

    delete []的方括号中不需要填数组元素数,系统自知。即使写了,编译器也忽略。 

    请注意“下标表达式”不必是常量表达式,即它的值不必在编译时确定,可以在运行时确定。 

             一维: int *a = new int[100];开辟一个大小为100的整型数组空间

             二维: int **a = new int[5][6]

             三维及其以上:依此类推.

             一般用法: new 类型 [初值]

    二、delete用法

    1. 删除单变量地址空间 

            int *a = new int; 

            delete a;   //释放单个int的空间 

    2. 删除数组空间 

            int *a = new int[5]; 

            delete []a;    //释放int数组空间 

    三、使用注意事项 

    1. new 和delete都是内建的操作符,语言本身所固定了,无法重新定制,想要定制new和delete的行为,徒劳无功的行为。 

    2. 动态分配失败,则返回一个空指针(NULL),表示发生了异常,堆资源不足, 分配失败。 

    3. 指针删除与堆空间释放。删除一个指针p(delete p;)实际意思是删除了p所指的目标(变量或对象等),释放了它所占的堆空间,而不是删除p本身(指针p本身并没有撤销,它自己仍然存在,该指针所占内存空间并未释放),释放堆空间后,p成了空指针。 

    4. 内存泄漏(memory leak)和重复释放。new与delete 是配对使用的, delete只能释放堆空间。如果new返回的指针值丢失,则所分配的堆空间无法回收,称内存泄漏,同一空间重复释放也是危险的,因为该空间可能已另分配,所以必须妥善保存new返回的指针,以保证不发生内存泄漏,也必须保证不会重复释放堆内存空间。 

    5. 动态分配的变量或对象的生命期。我们也称堆空间为自由空间(free store),但必须记住释放该对象所占堆空间,并只能释放一次,在函数内建立,而在函数外释放,往往会出错。 

    6. 要访问new所开辟的结构体空间,无法直接通过变量名进行,只能通过赋值的指针进行访问。 

    用new和delete可以动态开辟和撤销地址空间。在编程序时,若用完一个变量(一般是暂时存储的数据),下次需要再用,但却又想省去重新初始化的功夫,可以在每次开始使用时开辟一个空间,在用完后撤销它。

    以上就是这篇文章的全部内容了,有什么问题欢迎大家评论区留言。

     

    最后,如果你也想成为程序员,想要快速掌握编程,赶紧加入学习企鹅圈子

    里面有资深专业软件开发工程师,在线解答你的所有疑惑~编程语言入门“so easy”

    编程学习书籍:

     

    编程学习视频:

     

    展开全文
  • BLOB和TEXT类型区别

    2010-10-21 23:15:28
    不同点: 1、BLOB 列被视为二进制字符串(字节字符串)。 2、TEXT列被视为非二进制字符串(字符字符串)...1、在TEXT或BLOB列的存储或检索过程中,不存在大小写转换。 在大多数方面,可以将BLOB列视为能够足够大...

    不同点:
    1、BLOB 列被视为二进制字符串(字节字符串)。
    2、TEXT列被视为非二进制字符串(字符字符串)。
    3、BLOB列没有字符集,并且排序和比较基于列值字节的数值值。
    4、TEXT列有一个字符集,并且根据字符集的 校对规则对值进行排序和比较。

    相同点:
    1、在TEXT或BLOB列的存储或检索过程中,不存在大小写转换。

    在大多数方面,可以将BLOB列视为能够足够大的VARBINARY列。同样,可以将TEXT列视为VARCHAR列。

    BLOB和TEXT与VARBINARY和VARCHAR的区别:
    1、当保存或检索BLOB和TEXT列的值时不删除尾部空格。(这与VARBINARY和VARCHAR列相同)。
    2、对于BLOB和TEXT列的索引,必须指定索引前缀的长度。对于CHAR和VARCHAR,前缀长度是可选的。
    3、BLOB和TEXT列不能有 默认值。

    展开全文
  • 本课程旨在帮助具有初级编码经验的学生掌握编码和计算机科学的基础知识,从而使他们有足够的能力充分利用Make School上的所有其他课程。 本课程将涵盖过程和面向对象编程的基础,功能和递归,调试,解决问题的最佳...
  • 首先定时/计数器T0 的计数寄存器设置一定的值,运行控制位TR0 置1,启动定 时/ 计数器0;利用定时器0 来控制1S 的定时,同时定时/计数器T1 对外部的待 第2 页共27 页 测信号进行计数,定时结束时TR1 清0 ,停止计数;...
  • wps2012表格列转行

    2012-11-28 14:27:07
    编写迁移存储过程,因为代码逻辑调整要注掉诸多列,因人工操作,难免insert与select对应出现错误.一调试提示:PL/SQL: ORA-00947: 没有足够的值. 肯定是select与i...
      编写迁移存储过程,因为代码逻辑调整要注掉诸多列,因人工操作,难免insert与select对应出现错误.一调试提示:PL/SQL: ORA-00947: 没有足够的值.
           肯定是select与insert的列映射出现问题,经过分析.可采用把insert的列与select的列通过上述标题的行转列.在表格中一一对照,这样速度大为提升。
          具体wps 表格行转列操作链接如下:
      


     

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9240380/viewspace-750138/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/9240380/viewspace-750138/

    展开全文
  • 在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。...
  • 你必须知道495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    5.10但是如果NULL的值改变了,比如在使用非零内部空指针的机器上,用NULL(而不是0) 不是更好吗? 5.11 我曾经使用过一个编译器,不使用NULL就不能编译。 5.12 我用预处理宏#defineNullptr(type)(type*)0帮助...
  • 而PGP模型则允许多重地、独立地而非特殊可信个体签署的“名字/密钥”关联来证明证书的有效性,其理论是认为“只要有足够的签名,<名字/密钥>关联就是可信的,因为不会所有的签名者都是‘坏’的”。PGP的信任网就像...
  • 《你必须知道495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    《你必须知道495个C语言问题》以问答形式组织内容,讨论了学习或使用C语言的过程中经常遇到一些问题。书中列出了C用户经常问400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预...
  • ASP.NET网页代码模型及生命周期

    热门讨论 2009-07-28 14:22:11
    q 视图状态会影响性能,如果页面存储较大较多的值,则性能会有较大的影响。 q 在手机,移动终端上,可能无法保存视图状态中使用的值。 q 视图状态虽然安全性较高,但是还是有风险,如果直接查看页面代码,可以看到...
  • 语音识别MATLAB实现

    热门讨论 2009-03-03 21:39:18
    若得到声音信号常到大于预设,则将其作为有用信号存储。实验表明,利用过零率和预设长度相结合起来提取声音指令信号方法很有效。 B 语音信号预加重: 我们所采用预加重方法是较为常用网络: 传递...
  • 记录每个待填空所在行和列已经有哪些,接下来可以填哪些等信息),这导致代码中全局变量很多,全局变量在整个程序中到处调用,在没有足够注释情况下整个程序可读性不高,代码结构不是很清楚。  本文下面给出...
  • 5.10 但是如果NULL的值改变了,比如在使用非零内部空指针的机器上,用NULL(而不是0) 不是更好吗? 58  5.11 我曾经使用过一个编译器,不使用NULL就不能编译。 58 5.12 我用预处理宏#define Nullptr(type)(type...
  • 2.1:确保有足够的空间存储字符串的字符数据和 2.2:字符串操作过程中确保字符串有结束符. 2.3:把数据复制到固定长度的内存前必须检查边界 2.4:避免字符串内存操作函数的源指针和目标指针指向内存重叠区 3.1:格式...
  • 算法一般具有4个基本特征:可行性、确定性、有穷性、拥有足够的情报。 (2)算法的基本运算和操作 算法的基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。 (3)算法的3种基本控制结构 算法的3种基本...
  • 大话数据结构

    2018-12-14 16:02:18
    事先建立一个有2050大的数组,然后把所有年份按下标数字对应,如果是闰年,此数组项的值就是1,如果不是就是0。这样,所谓的判断某一年是否是闰年就变成了查找这个数组的某一项的值是多少的问题。 2.13总结回顾 37 ...

空空如也

空空如也

1 2 3 4 5
收藏数 96
精华内容 38
关键字:

存储过程没有足够的值