oracle 检查字符中数据类型 函数&存储过程

dump函数用来判断字符串中的字符类型是属于number或者string

存储过程

create or replace procedure pro_isNum(I_STRING in varchar2,o_note out varchar2)
 as
        string1 varchar2(1000);--字段通过dump()转换后
        num1 number(20);--字段中字符的个数
        num2 number(20);--ASCII比较变量
        i number(20);--循环累积变量
 begin
   IF I_String is not null then
      select
            ‘,‘||substr(dump(I_STRING),instr(dump(I_STRING),‘:‘)+1,length(dump(I_STRING))-instr(dump(I_STRING),‘:‘))||‘,‘
           into string1 from dual;
   select nvl(length(string1)-length(replace(string1,‘,‘,‘‘)),-1) into num1 from dual;
     i:=1;
     o_note:=‘number‘;
     <<first_loop>>
       loop
         if i =num1 then
            dbms_output.put_line(‘循环已结束数据类型为‘||o_note);
          exit first_loop;
         end if;
         select to_number(substr(string1,instr(string1,‘,‘,1,i)+1,instr(string1,‘,‘,1,i+1)-instr(string1,‘,‘,1,i)-1)) into num2 from dual;
         IF num2<48 or num2>57 then
           o_note:=‘string‘;
           return;
         end IF;
         i:=i+1;
      end loop fst_loop;
      dbms_output.put_line(‘LOOP循环已经结束!‘);
   else
     o_note:=‘null‘;
   end if;
 end;

函数

create or replace function func_isNum(I_STRING in varchar2)
 return varchar2--返回类型
 is
        string1 varchar2(1000);--字段通过dump()转换后
        num1 number(20);--字段中字符的个数
        num2 number(20);--ASCII比较变量
        i number(20);--循环累积变量
        o_note varchar2(20);--返回类型
 begin
   IF I_String is not null then
      select
            ‘,‘||substr(dump(I_STRING),instr(dump(I_STRING),‘:‘)+1,length(dump(I_STRING))-instr(dump(I_STRING),‘:‘))||‘,‘
           into string1 from dual;
   select nvl(length(string1)-length(replace(string1,‘,‘,‘‘)),-1) into num1 from dual;
     i:=1;
     o_note:=‘number‘;
     <<first_loop>>
       loop
         if i =num1 then
            dbms_output.put_line(‘循环已结束数据类型为‘||o_note);
          exit first_loop;
         end if;
         select to_number(substr(string1,instr(string1,‘,‘,1,i)+1,instr(string1,‘,‘,1,i+1)-instr(string1,‘,‘,1,i)-1)) into num2 from dual;
         IF num2<48 or num2>57 then
           o_note:=‘string‘;
         end IF;
         i:=i+1;
      end loop fst_loop;
      dbms_output.put_line(‘LOOP循环已经结束!‘);
   else
     o_note:=‘null‘;
   end if;
   return o_note;
 end;
时间: 2024-10-02 22:43:15

oracle 检查字符中数据类型 函数&存储过程的相关文章

oracle,sql server count函数 存储过程 判断 行数 注意事项

oralce中使用 count 函数判断 行数 需要注意 一定是count 有值的字段,接下来看一组语句 1 --查询数据 2 select * from kk_create_ka where auto_id='D7313B4716AD4062B82D3CD8513DA7A8'; 1 --count 2 select count(I_E_Flag) from kk_create_ka where auto_id='D7313B4716AD4062B82D3CD8513DA7A8'; 3 sele

sqlserver中自定义函数+存储过程实现批量删除

由于项目的需要,很多模块都要实现批量删除的功能.为了方便模块的调用,把批量删除方法写成自定义函数.直接上代码. 自定义函数: ALTER FUNCTION [dbo].[func_SplitById] (@str varchar(50),@split varchar(10))--传过来的id字符串 --分割的标志 RETURNS @t Table (id int) --返回一个表 AS BEGIN DECLARE @x XML --进行拼接 SET @x = CONVERT(XML,'<item

Oracle查询库中已有存储过程、创建定时刷新视图、角色权限传递、创建序列触发器

SELECT * FROM V$ACCESS O WHERE O.TYPE LIKE 'PROCEDURE%' 创建物化视图且定时刷新create materialized view mv_name refresh force on demand start with sysdate next sysdate + 1create materialized view mv_name refresh force on demand start with sysdate next to_date( c

Oracle 中 decode 函数用法

Oracle 中 decode 函数用法 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译值1)ELSIF 条件=值2 THEN RETURN(翻译值2) ......ELSIF 条件=值n THEN RETURN(翻译值n)ELSE RETURN(缺省值)END IFdecode(字段或字段的运算,值1,值2,值3) 这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值

Oracle中instr 函数的详解

INSTR (源字符串, 目标字符串, 起始位置, 匹配序号) 在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置.只检索一次,就是说从字符的开始 到字符的结尾就结束. 语法如下: instr( string1, string2 [, start_position [, nth_appearance ] ] ) 参数分析: string1 源字符串,要在此字符串中查找. string2 要在string1中查找的字符串. start_position 代表strin

Oracle系列:(29)存储过程和存储函数

1.存储过程[procedure] 什么是存储过程? 事先运用oracle语法写好的一段具有业务功能的程序片段,长期保存在oracle服务器中,供oracle客户端(例如,sqlplus)和程序语言远程访问,类似于Java中的函数. 为什么要用存储过程? (1)PLSQL每次执行都要整体运行一遍,才有结果 (2)PLSQL不能将其封装起来,长期保存在oracle服务器中 (3)PLSQL不能被其它应用程序调用,例如:Java 存储过程与PLSQL是什么关系? 存储过程是PLSQL的一个方面的应用

Oracle 在JDBC中使用 存储过程,包

前提: 在Oracle中已经定义  存储过程  和  存储函数 和  包 导入了Oracle的JDBC   jar  包 1 package demo; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.sql.Statement; 8 9 public class J

Oracle中SYS_CONNECT_BY_PATH函数的妙用

在Oracle中,SYS_CONNECT_BY_PATH函数主要作用是可以把一个父节点下的所有子节点通过某个字符进行区分,然后连接在一个列中显示. AD: Oracle中SYS_CONNECT_BY_PATH函数是非常重要的函数,下面就为您介绍一个使用SYS_CONNECT_BY_PATH函数的例子,实例如下: create table test (a varchar2(10),b varchar2(10)); INSERT INTO TEST (A, B) VALUES ('1', '我');

《oracle每日一练》oracle截取字符的函数

转载 在Oracle中 可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符. 在一个字符串中查找指定的字符,返回被查找到的指定的字符的位置. 语法: instr(sourceString,destString,start,appearPosition) instr('源字符串' , '目标字符串' ,'开始位置','第几次出现') 其中sourceString代表源字符串: destString代表要从源字符串中查找的子串: start代表查找的开始位置,这个参数可选的,默认为