代码编织梦想

有一個小需求,需要實現日期相減,然後把數據轉化為34進制,為此我準備兩個函數

date_trans函數負責日期相加減,並調用進制轉換函數

create or replace  function date_trans2(v_days  varchar)
return varchar2
is 
v_day number;
v_str varchar2(10);
begin
   select ceil(to_date(v_days ,'yyyy/mm/dd')- to_date('1970/01/01','yyyy/mm/dd') )  into v_day  from dual;
   select convert_decimal_to_base34(v_day) into v_str from dual;
   
return v_str;
end date_trans2;

convert_decimal_to_base34函數負責進制轉換

CREATE OR REPLACE function convert_decimal_to_base34(p_decimal_num  number)
return varchar2 is
v_Result_str varchar2(7);
v_replace_str varchar2(1);
v_baseIndex int := 6;
v_remainder int := 0;
v_quotient int := p_decimal_num;
begin
---------Initial string--------
v_Result_str := '';
loop
v_remainder := mod(v_quotient, 34);
------------replace decimal_num with base 34 code
select decode(v_remainder,
'10',
'A',
'11',
'B',
'12',
'C',
'13',
'D',
'14',
'E',
'15',
'F',
'16',
'G',
'17',
'H',
'18',
'I',
'19',
'J',
'20',
'K',
'21',
'L',
'22',
'M',
'23',
'N',
'24',
'O',
'25',
'P',
'26',
'Q',
'27',
'R',
'28',
'S',
'29',
'T',
'30',
'U',
'31',
'V',
'32',
'W',
'33',
'X',

v_remainder)
into v_replace_str
from dual;
v_result_str :=  v_replace_str || v_result_str;
--------------
if v_remainder!=0 then 
    v_quotient := floor(v_quotient / 34);
end if;
--v_baseIndex := v_baseIndex - 1;
exit when  v_quotient <= 0;
----------Do while conditional loop ----------
end loop;

return(v_Result_str);
end convert_decimal_to_base34;

3fb4de14a9b0516a507131577a0d8ebd.png

進行進制轉換結果正確

b88f2bc58c2119bdac69651eb3a3b4f5.png

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_73368873/article/details/128859727

oracle使用可视化界面(pl/sql)操作_youshang520i的博客-爱代码爱编程

目录     1.PLSQL编程基础 1.1 PL/SQL简介 1.2 PL/SQL的优点 1.3 PL/SQL体系结构 1.4 PL/SQL编程结构 1.4.1 变量和常量 1.4.2 赋值 1.4.3 输入与输出 1.4.4 拼接 1.4.5 注释 1.5 数据类型 1.5.1 常用标量类型 1.5.2 LOB类型 1.

pl/sql基础知识总结(根据网络内容整理)-爱代码爱编程

  1. PL/SQL简介   PL/SQL是ORACLE系统的核心语言,现在ORACLE的许多部件都是由PL/SQL写成。在PL/SQL中可以使用的SQL语句有: INSERT,UPDATE,DELETE,SELECT INTO,COMMIT,ROLLBACK,SAVEPOINT。 提示:在 PL/SQL中只能用 SQL语句中的 DML 部分,不能用

oracle(六)pl/sql语言_抠脚的鱼的博客-爱代码爱编程

目录 PL/SQL语言的结构PL/SQL组件声明部分声明常量声明变量 执行部分赋值语句条件语句IF分支语句CASE循环语句LOOP…EXIT…END循环语句LOOP…EXIT WHEN…END循环语句WHILE

ORACLE PL/SQL调用WEBSERVICE多种方式详解-爱代码爱编程

在使用PL/SQL访问HTTP网站时一般使用工具包UTL_HTTP调用webservice。 调用基于json数据传输的restful webservice 以文本方式传输request内容 l_rest_requst := utl_url.escape(p_requst_data,

pl/sql导入导出数据-爱代码爱编程

一次处理任务,突然发现自己不会用pl/sql的导入导出,尴尬。 记录下使用方法。 文章目录 导出oracle 导出sql插入pl/sql developer导入其他导出表结构根据查询条件导出导出不同用户的数据导入可以切换用户么pl/sql 查询结果的导出为什么这么快 导出 入口有2个: 表上右键 | 导出数据(默认选中右键的表)。 工具 | 导

PL/SQL程序基础2-爱代码爱编程

PL/SQL程序基础2 一.实验目标二.实验项目三.实验错误解决方案 一.实验目标 掌握较复杂的PL/SQL编程方法。具备如下能力: 针对数据库应用领域的数据需求,设计出基于Oracle数据库的解决方案的能力;承担Oracle数据库系统的实施、运行与维护等基本工作的能力。二.实验项目 在A_DB模式中有一个表tan1(a),表中有若干个整

PL/SQL实现POST请求和参数AES加解密-爱代码爱编程

PL/SQL实现POST请求和参数AES加解密 背景程序运行环境相关函数代码 背景 项目上使用的HIS程序(C/S架构:PowerBuilder+Oracle12c)需要对接第三方支付系统(REST接口)实现收退费。 为了尽量实现对现有的收费模块做最少改动(主要还是PB功力不够,没把握),决定通过PL/SQL完成接口交互模块,PB只完成数据

oracle 绑定产量太多,sql - ORA - 06502:PL / SQL:数字或值错误:批量绑定:截断绑定 - 堆栈内存溢出...-爱代码爱编程

PL / SQL和SQL中的LONG ROW有所不同。 在SQL中: “可变长度高达2千兆字节的原始二进制数据。” 在PL / SQL中: “您使用LONG RAW数据类型来存储二进制数据或字节字符串.LONG RAW数据类似于LONG数据,但PL / SQL不会解释LONG RAW数据.LONG RAW值的最大大小为32760字节。” 见下

oracle 修改 update clob pl/sql,Oracle SQL&PL/SQL笔记-爱代码爱编程

一.单行函数字符函数 (1).LOWER() 字符小写 (2).UPPER() 字符大写 (3).INITCAP() 首字符大写 (4).CONCAT() 字符串连接 (5).SUBSTR() 字符串截取 (6).LENGTH() 返回字符串长度 (7).INSTR()  返回字符串的位置 (8).LPAD()   左对齐 (9).R

啃书补更,sql基础理论,数据库范式,PL/SQL-爱代码爱编程

《oracle开发实战经典》 软件项目的开发周期 需求分析 最困难、最耗费时间的一步,也是整个设计过程的基础。主要任务是对现实世界中要处理的对象(公司、部门及企业,也可以理解成客户)进行详细调查,然后通过分析,逐步明确客户/用户对系统的需求,包括数据需求和业务处理需求。概要设计 概要设计是数据库设计的关键,通过综合、归纳与抽象用户

PL/SQL函数大全(转)-爱代码爱编程

1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual; A         a      ZERO     SPACE --------- --------- --------- ------