ORACLE 用32進制表示月中的一天
WHEN 'YMD' THEN
v_year := to_char(SYSDATE, 'Y');
v_month := FN_CONVERT_DECIMAL_TO_BASE(to_number(to_char(SYSDATE, 'MM')),32,1);
v_day := FN_CONVERT_DECIMAL_TO_BASE(to_number(to_char(SYSDATE, 'DD')),32,1);
v_str := v_year || v_month || v_day;
WHEN 'YMDD' THEN
v_year := to_char(SYSDATE, 'Y');
v_month := FN_CONVERT_DECIMAL_TO_BASE(to_number(to_char(SYSDATE, 'MM')),16,1);
v_day :=to_char(SYSDATE, 'DD');
FUNCTION FN_CONVERT_DECIMAL_TO_BASE (P_DECIMAL_NUM IN INTEGER, P_DIGITAL_TYPE IN VARCHAR2, P_LEN IN INTEGER) RETURN VARCHAR2
IS v_result_str VARCHAR2 (20) := '0';
v_replace_str VARCHAR2 (8000);
v_baseindex INT := 1;
v_quotient INT := p_decimal_num;
v_digit INT := P_LEN - 1;
v_digit_loop INT := 0;
v_basenumber INT := 0;
v_basebeginnumber INT := 10;
v_decodesql VARCHAR2 (1000);
v_remainder INT := 0;
v_baseloopnumber INT := 0;
v_base_10 VARCHAR2(10) := '0123456789';
v_base_16 VARCHAR2(16) := '0123456789ABCDEF';
v_base_30 VARCHAR2(30) := '0123456789ABCDEFGHJKLMNPQRTWXY';
v_base_32 VARCHAR2(32) := '0123456789ABCDEFGHJKLMNPRSTVWXYZ';
v_base_33 VARCHAR2(33) := '0123456789ABCDEFGHJKLMNPQRSTVWXYZ';
v_base_34 VARCHAR2(34) := '0123456789ABCDEFGHJKLMNPQRSTUVWXYZ';
v_base_36 VARCHAR2(36) := '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
v_base_code varchar2(62) := '';
BEGIN
CASE
P_DIGITAL_TYPE WHEN '10' THEN
v_basenumber := LENGTH(v_base_10);
v_base_code := v_base_10;
WHEN '16' THEN
v_basenumber := LENGTH(v_base_16);
v_base_code := v_base_16;
WHEN '30' THEN
v_basenumber := LENGTH(v_base_30);
v_base_code := v_base_30;
WHEN '32' THEN
v_basenumber := LENGTH(v_base_32);
v_base_code := v_base_32;
WHEN '33' THEN
v_basenumber := LENGTH(v_base_33);
v_base_code := v_base_33;
WHEN '34' THEN
v_basenumber := LENGTH(v_base_34);
v_base_code := v_base_34;
WHEN '36' THEN
v_basenumber := LENGTH(v_base_36);
v_base_code := v_base_36;
END CASE;
v_baseloopnumber := v_basenumber - 10;
v_digit_loop := v_digit;
IF v_basenumber = 10
THEN
RETURN LPAD(P_DECIMAL_NUM,P_LEN,'0');
ELSE
v_result_str := LPAD(v_result_str,v_digit,'0');
END IF;
LOOP
v_decodesql := v_decodesql || '''' || v_basebeginnumber || ''',''' || SUBSTR (v_base_code, v_basebeginnumber + 1, 1) || ''',';
v_basebeginnumber := v_basebeginnumber + 1;
v_baseloopnumber := v_baseloopnumber - 1;
EXIT WHEN v_baseloopnumber = 0; END LOOP;
LOOP
v_remainder := MOD (v_quotient, v_basenumber);
EXECUTE IMMEDIATE 'select Decode(' || v_remainder || ' ,' || v_decodesql || v_remainder || ') From dual ' INTO v_replace_str;
v_result_str := SUBSTR (v_result_str, 0, v_digit_loop) || v_replace_str || SUBSTR (v_result_str, v_digit_loop + 2, v_digit - v_digit_loop); v_quotient := FLOOR (v_quotient / v_basenumber); v_digit_loop := v_digit_loop - 1; EXIT WHEN v_digit_loop < 0; END LOOP;
RETURN v_result_str; END FN_CONVERT_DECIMAL_TO_BASE;
ORACLE 用32進制表示月中的一天的更多相关文章
- Oracle 中的进制转换
Oracle 中的进制转换 */--> Oracle 中的进制转换 Table of Contents 1. 进制名 2. 10进制与16进制互相转换 2.1. 10进制转换为16进制 2.2. ...
- 64位主机64位oracle下装32位客户端ODAC(NFPACS版)
64位主机64位oracle下装32位客户端ODAC(NFPACS版) by dd 1.下载Oracle Data Access Components(ODAC) Xcopy的两个版本: x86:(我 ...
- 51nod1086(多重背包&二進制)
題目鏈接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1086 題意:中文題誒- 思路:很顯然這是一道多重背包題,不過這 ...
- php利用32进制实现对id加密解密
前言 最近在项目中遇到一个问题,当前用户分享一个邀请码给好友,好友根据邀请码注册成为新用户之后,则成为当前用户的下级,特定条件下,可以得到下级用户的一系列返利.这里要实现的就是根据当前用户的id,生成 ...
- (64位oracle使用32位的PLSQL)安装64位的oracle数据库软件,使用32位的PLSQL Developer连接方法
因为PLSQL Developer没有提供64位的,于是依据网上的资料做了一下整理,发上来 1.下载并安装Oracle 11g R2 64位,在server上安装时忽略硬件检測失败信息: 2.下载Or ...
- Windows Server 2008 R2 64位操作系统安装Oracle 11g 64位数据库,在客户终端上安装Oracle 11g 32位,才能安装P/L Sql Developer并配置
1.下载Oracle 11g R2 for Windows的版本 下载地址: http://www.oracle.com/technetwork/database/enterprise-edition ...
- 让 Oracle 11g 32位运作在64位 Windows 上
并非不能运行. 本人安装版未曾尝试,但绿色版倒是运行成功了. 很简单:注册表的位置发生了变化而已! 默认(32位.64位),oracle会读取以下注册表的位置: [HKEY_LOCAL_MA ...
- Guid和Oracle中16进制字符的转换
我们知道在Oracle中存的guid是16进制字符串,而在我们的C#代码中存的是guid对象,这样我会就要进行转换, 下面给出了两者进行转换的方法: public class Guid2RawProc ...
- [Oracle] - 使用32位 PLSQL(PL/SQL Developer)登陆64位Oracle失败之解决
配置环境 Oracle服务端oracle_winx64_12c_database.iso Oracle客户端instantclient-basiclite-nt-12.1.0.1.0.zip 集成开发 ...
随机推荐
- 2.1.FastDFS-单机拆分版-调度器安装配置
Centos610系列配置 我们在Centos610FastDFS单机模式-FastDFS安装 中已经完成了FastDFS的安装,接下来我们进行FastDFS调度器的安装. 1.找到FastDFS配置 ...
- 「CF891C」Envy
传送门 Luogu 解题思路 考虑最小生成树的几个性质: 所有最小生成树中边权相等的边的条数相等 在任意一颗最小生成树中,边权相等的边所联通的点集一定 那么我们考虑把边权相等的边单独拿出来考虑. 每次 ...
- Django - Form嵌套的Meta类 + 为什么type()能创建类
Form里面嵌套了一个Meta类 class PostForm(forms.ModelForm): class Meta: model = Post # field to be exposed fie ...
- Bugku-CTF加密篇之简单加密(e6Z9i~]8R~U~QHE{RnY{QXg~QnQ{^XVlRXlp^XI5Q6Q6SKY8jUAA)
简单加密 e6Z9i~]8R~U~QHE{RnY{QXg~QnQ{^XVlRXlp^XI5Q6Q6SKY8jUAA
- 实现简单HttpServer案例
<html> <head> <title>第一个表单</title> </head> <body> <pre> me ...
- 吴裕雄--天生自然Numpy库学习笔记:NumPy 广播(Broadcast)
广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行. 如果两个数组 a 和 b 形状相同,即满足 a.shape == ...
- CDH
CDH 1.CDH简介 CDH 2.Cloudera Manager的安装 软件下载地址: 链接:https://pan.baidu.com/s/1C5HpiVEOtH_4PjylyJaXvA ...
- git分支在项目中管理
实际项目中如何使用Git做分支管理 2018年06月24日 18:08:24 ShuSheng007 阅读数:9241 版权声明: https://blog.csdn.net/ShuSheng00 ...
- Java的下载与安装
下载Java 如果要是想聊天,那我们就需要腾讯QQ,先把它下载过来安装上,就可以聊天了,那如果是想要开发java程序呢,我们就需要下载一个开发工具包“jdk”,安装上就可以开发了.当然java是属于哪 ...
- 【JAVA算法题】职业抢劫
题目 /*You are a professional robber planning to rob houses along a street. * Each house has a certain ...