首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将PL/SQL中订单日期的工作日标识为存储函数

将PL/SQL中订单日期的工作日标识为存储函数
EN

Stack Overflow用户
提问于 2019-03-11 00:51:05
回答 1查看 491关注 0票数 2

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE OR REPLACE FUNCTION DAY_ORD_SF 
(
  P_DATE_CREATED IN bb_basket.dtcreated%type 
)
RETURN DATE AS
    lv_date_created bb_basket.dtcreated%type;
BEGIN
    SELECT to_char(to_date(P_DATE_CREATED,'yyyy-mm-dd'),'DAY') DAY_CREATED
        INTO lv_date_created
    FROM BB_BASKET
    WHERE lv_date_created <= sysdate
    ORDER BY lv_date_created ASC;
RETURN lv_date_created;
END DAY_ORD_SF;
/

SELECT IDBASKET, dtcreated date_created, to_char(DTCREATED,'DAY') DAY_CREATED, day_ord_sf(dtcreated) weekday_created
FROM BB_BASKET
order by DTCREATED asc;

这是我的存储函数,我正在练习存储函数的任务。我真的快要完成这个问题了,但是我得到了一个没有找到数据的错误。我并不是真的理解这个错误,因为当我自己运行代码时,它是有效的。基本上,这个函数的作用是接受一个日期并返回一个varchar2数据类型。我确实有"to_date(…,'yyyy-mm-dd'),..“在将这段代码添加到函数中之前。此任务的第一部分是创建一条SELECT语句,列出每个篮子的篮子ID和工作日,第二部分是创建一条SELECT语句,使用GROUP BY子句列出每个工作日的篮子总数。根据结果,哪一天是最受欢迎的购物日?我也忘了问,如果你能告诉我为什么我得到了“没有数据找到”的错误,将不胜感激!

谢谢你帮我的忙!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-11 01:47:25

好吧,这里似乎有多个问题。

让我们从没有发现数据问题开始。如果在select语句中使用INTO,而select没有返回任何行,则会得到一个未找到数据的异常。这可以通过内部有异常处理程序的匿名begin end块来处理,但我相信情况并非如此。举个例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
declare
  v_value number;
begin
  select null
    into v_value
    from dual
   where 1=2; 
exception 
  when NO_DATA_FOUND then
    null; -- Ignore exception and continue
end;

条件1=2永远不会满足,因此select始终不返回任何行,这将始终产生no data found错误。使用异常处理程序,我们决定下一步要做什么。在此示例中,Null将不执行任何操作。

返回到您的函数,您的条件是如果变量lv_date_created小于或等于当前日期,则执行某些操作。这永远不会起作用,因为lv_date_created在执行时将等于null。它只是在您的函数中声明,然后在您的select中使用。这将始终导致false,因此select将始终不返回任何行,也不返回任何数据发现异常。

您还提到,您希望函数返回varchar2,但您的定义是它返回日期。此外,变量lv_date_created的类型是date,这是返回的变量,您用Oracle值填充它,所以显然varchar2的值正在进行一些不受控制的转换,这不会抛出预期数据类型的异常。

另外,条件lv_date_created <= sysdate可能表示select将找到多个值,如果找到多个行,这将导致太多行异常。

现在让我们开始修复这个函数。主要的问题是,你是否需要在其中选择一些东西。选择类似的东西通常用于检查表中的条目是否存在,并且没有发现数据异常将告诉我们条目不存在。如果它是一个通用的函数,在你的数据库中的多个地方使用,那么我认为select是不需要的。我将包括这两个解决方案作为示例。

请注意,对于第一个示例,您不应该在调用它时提供dtcreated列,而应该提供idBase.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE OR REPLACE FUNCTION DAY_ORD_SF 
(
  P_IDBASKET IN bb_basket.idbasket%type 
)
RETURN VARCHAR2 AS
    lv_date_created VARCHAR2(240);
BEGIN
    SELECT to_char(dtcreated,'DAY') DAY_CREATED
        INTO lv_date_created
    FROM BB_BASKET
    WHERE IDBASKET = P_IDBASKET;
RETURN lv_date_created;
END DAY_ORD_SF;
/

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE OR REPLACE FUNCTION DAY_ORD_SF 
(
  P_DATE_CREATED IN bb_basket.dtcreated%type 
)
RETURN VARCHAR2 AS
BEGIN
RETURN to_char(P_DATE_CREATED,'DAY');
END DAY_ORD_SF;
/
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55093915

复制
相关文章
VFP的过程或函数如何接收数组参数或返回一数组结果?
这里要注意二个方面,1、过程或函数中,必须定义一个全局数据 public ,2、RETURN 必须加@,这个小老鼠。也是地址引用返回值。
加菲猫的VFP
2021/08/12
3.3K0
mybatis返回对象_存储过程不能返回结果
在更多的了解mybatis后发现不单单通过实体类可以直接返回数据,还可以直接返回一个Map结果集(resultType=”java.util.Map”) ,如果是多条数据则返回一个List<Map<String, Object>>结果集。
全栈程序员站长
2022/11/09
1.8K0
mybatis返回对象_存储过程不能返回结果
REST API返回结果对象设计
基于REST API的项目返回的数据结构题都是统一的,这样方便接口对接和使用。因此,对结果对象的设计会有一定的要求:
程序新视界
2021/12/07
1K0
vuex 监听数组或对象
store.js /* * @Author: Zheng Lei * @Email: baimoc@163.com * @Date: 2020-06-14 09:47:03 * @LastEditTime: 2021-08-12 17:20:02 * @FilePath: \EmAtlas\src\store.js */ import Vue from 'vue' import Vuex from "vuex" Vue.use(Vuex); export default new Vuex.S
白墨石
2021/08/18
4390
构造方法或new返回该对象
一个小技巧,调用构造方法或都new返回该对象: function Person(){ // ... // 不是new的时候this指向的是调用者 默认是window if (!(this instanceof Person)) { return new Person(); } } Person.prototype.sayHello = function (){ console.log("Hello World!"); } var lufei = Person(); lufe
kai666666
2020/10/17
7280
Fastjson 对象或数组转JSON
w3cshool:https://www.w3cschool.cn/fastjson/ Fastjson对象或数组转JSON :https://www.w3cschool.cn/fastjson/fastjson-ex1.html
全栈程序员站长
2022/09/10
2.2K0
Php如何返回json数据(返回json对象或json格式数据)
header(‘Content-Type:application/json; charset=utf-8’);
超级小可爱
2023/02/20
17K0
Authors数组或集合返回自动生成的主键
如果你的数据库还支持多行插入, 你也可以传入一个Authors数组或集合,并返回自动生成的主键。
用户8983410
2021/10/07
9960
2022-06-08:找到非负数组中拥有“最大或的结果“的最短子数组,返回最短长度。
2022-06-08:找到非负数组中拥有"最大或的结果"的最短子数组,返回最短长度。
福大大架构师每日一题
2023/06/08
4360
2022-06-08:找到非负数组中拥有“最大或的结果“的最短子数组,返回最短长度。
2022-06-08:找到非负数组中拥有“最大或的结果“的最短子数组,返回最短长度。
2022-06-08:找到非负数组中拥有"最大或的结果"的最短子数组,返回最短长度。
福大大架构师每日一题
2022/06/08
1K0
2022-06-08:找到非负数组中拥有“最大或的结果“的最短子数组,返回最短长度。
2021-05-13:数组中所有数都异或起来的结果,叫做异或和。给定一个数组arr,返回arr的最大子数组异或和。
2021-05-13:数组中所有数都异或起来的结果,叫做异或和。给定一个数组arr,返回arr的最大子数组异或和。
福大大架构师每日一题
2021/08/05
4210
数组或对象中的内容间隔显示
总结:间隔显示,不要使用for 循环,原因是for循环是同步,setTimeout是异步,同步执行完再执行异步。
tianyawhl
2019/11/07
4.3K0
2021-05-14:给定一个数组arr,想知道arr中哪两个数的异或结果最大。返回最大的异或结果。
2021-05-14:给定一个数组arr,想知道arr中哪两个数的异或结果最大。返回最大的异或结果。
福大大架构师每日一题
2021/08/05
8700
mybatis返回结果处理
当查询的记录条数是多条的时候,必须使用集合接收。如果使用单个实体类接收会出现异常。如果返回的是一条记录可以用集合接收
一个风轻云淡
2023/10/15
2310
mybatis返回结果处理
javascript 数组以及对象的深拷贝(复制数组或复制对象)的方法
如上,arr的修改,会影响arr2的值,这显然在绝大多数情况下,并不是我们所需要的结果。 因此,数组以及对象的深拷贝就是javascript的一个基本功了。
FungLeo
2022/05/05
3.1K0
javascript 数组以及对象的深拷贝(复制数组或复制对象)的方法
MongoDB中如何返回数组对象中第一个对象
在使用MongoDB数据库时,为了减少关联操作,我们通常采用嵌套模型,数组对象是比较常见,例如商品的评论、关注好友等,通常返回前面N条或者第一条之类来减少网络流量(所有历史消息意义可能不大).另外就是单个有16M的限制,此时可能采用连接方式,将部分信息存储在另外一个集合中。最近刚好遇到一个find需求,针对结果集的数组只返回第一条元素。我们知道MongoDB针对数组操作符非常丰富。接下来主要介绍,elemMatch,
徐靖
2022/09/22
12.7K0
php json_encode()函数返回对象和数组问题
php json_encode() 函数格式化数据时会根据不同的数组类型格式化不同类型的json数据
码缘
2019/09/11
3.7K0
mybatis返回结果类型(resulttype返回list)
这样设置返回类型为resultClass=”java.util.HashMap”,查询时执行queryForList
全栈程序员站长
2022/08/01
5.7K0
或对,或错?
公号许久没更文了,这段时间以来,自己在面临着一些抉择。未曾想过,毕业后一个月考虑的事情比大学四年加起来的还要多。也许是大学过得太安逸了,欠的债全部攒到毕业后来还。
Python技术与生活认知的分享
2018/09/30
4680
或对,或错?
SpringBoot统一返回结果
在后台开发时,控制台得到的数据格式会有不同,这时我们需要设置统一返回结果,方便我们分析数据以及对数据进行管理。
算法与编程之美
2022/05/23
9340
SpringBoot统一返回结果

相似问题

Powershell在pscustomobject中展开结果数组

10

Powershell数组或对象

30

如何在powershell数组中展开对象值

12

PowerShell -展开组-对象

135

从C#发送Powershell并从结果返回数组对象?

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文