oracle数据库存储过程问题: 传入一个字符串(字符串格式如:“辣椒_食品,西红柿_食品,板鞋_

oracle数据库存储过程问题: 传入一个字符串(字符串格式如:“辣椒_食品,西红柿_食品,板鞋_,第1张

数组在Oracle里面使用不怎么方便,一般情况下很少使用,给你提个新方法实现你的功能。

设定数据库结构:

CREATE TABLE GOODS

(

  PM  VARCHAR2(20 BYTE),--品名

  FL  VARCHAR2(20 BYTE),--分类

  RQ  DATE,             --日期

  BZ  VARCHAR2(50 BYTE) --备注

)

存储过程如下:

CREATE OR REPLACE procedure PROC_split(In_String IN VARCHAR2) is

v_split1 VARCHAR2(10) DEFAULT ','

v_split2 VARCHAR2(10) DEFAULT '_'

len      NUMBER DEFAULT 0

nStr     VARCHAR2(200)

nStr1    VARCHAR2(40)

nStr2    VARCHAR2(20)

nStr3    VARCHAR2(20)

place NUMBER(10) default 1

begin

--输入串格式

--'辣椒_食品,西红柿_食品,板鞋_服饰,植物油_食品,领带_食品,'

  len := length(In_String)

  IF len  < 1 THEN

    RETURN

  END IF 

  nStr := In_String

  place := INSTR(nStr,v_split1,1,1)

  WHILE (place > 0 )

  LOOP

    nStr1 := SUBSTR(nStr,1,place-1)

    nStr  := SUBSTR(nStr,place + 1)

    

    place := INSTR(nStr1,v_split2,1,1)

    IF (place > 0 ) THEN

      nStr2 := SUBSTR(nStr1,1,place-1)

      nStr3 := SUBSTR(nStr1,place + 1)

      UPDATE goods SET rq = SYSDATE WHERE pm=nStr2 AND fl=nStr3

      //dbms_output.put_line('nStr2=['||nStr2||'],nStr3=['||nStr3||']')

    END IF

    place := INSTR(nStr,v_split1,1,1)

  END LOOP

  COMMIT

end PROC_split

/

测试语句:

DECLARE 

  IN_STRING VARCHAR2(32767)

BEGIN 

  IN_STRING := '辣椒_食品,西红柿_食品,板鞋_服饰,植物油_食品,领带_食品,'

  PROC_SPLIT ( IN_STRING )

  COMMIT 

END

我的调试输出是:

nStr2=[辣椒],nStr3=[食品]

nStr2=[西红柿],nStr3=[食品]

nStr2=[板鞋],nStr3=[服饰]

nStr2=[植物油],nStr3=[食品]

nStr2=[领带],nStr3=[食品]

这里面只用了两个函数:INSTR,SUBSTR.

and表示交集,or表示并集,如果想选择某些面积范围内的省市,选择语句就是“shape_area >某值 AND shape_area

ArcGIS“按属性选择”使用的是简单的SQL语句:SQL语句查询表达式的一般格式: 运算符>字符串>对于组合查询,使用以下格式: 。

字符串必须始终用单引号括起,注意区分大小写。% 表示其位置可以是任意数量的任何字符,"_"表示其位置仅有一个字符。在查询个人地理数据库时,使用通配符 * 来表示任意数量的字符,而使用 ? 来表示一个字符。如果在字符串中同时使用通配符和 = 运算符,则此字符将被视为字符串的一部分,而不会将其视为通配符。()表示不等于。可使用 NULL 关键字来选择指定字段为空值的要素和记录,NULL 关键字的前面始终使用 IS 或 IS NOT。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10011845.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存