--动态执行sql --赋值的变量 STD_STANDARD_INFO_COUNT --V_sql := 'SELECT COUNT(1) FROM STD_STANDARD_INFO SSI WHERE SSI.STANDARD_NO = ''' || SSS.STANDARD_NO ||'''' ; EXECUTE IMMEDIATE V_sql INTO STD_STANDARD_INFO_COUNT; --ORACLE中正则表达式验证 REGEXP_LIKE()函数 SELECT 1 FROM DUAL WHERE REGEXP_LIKE('234234','^\+?[1-9][0-9]*$') --声明一个为VARCHAR2(32)类型的数组,键值对的都是以VARCHAR2(32) TYPE ID_LOOKUP IS TABLE OF VARCHAR2(32) INDEX BY VARCHAR2(32); ID_TRANSLATE ID_LOOKUP; --给数组赋值 ID_TRANSLATE(NEW_ROWS(I).ID) := V_MRO_EQU_MODEL_STRUCT_ID; --取值相同 NEW_ROWS(I).ID := ID_TRANSLATE(NEW_ROWS(I).ID) --声明一个表类型的数组 TYPE STD_DATA_PUSH_ITEMS IS TABLE OF TABLE_NAME%rOWTYPE; --存放每行记录的类型 NEW_ROWS STD_DATA_PUSH_ITEMS; --声明变量 --------------使用start-------------- --给表类型存放数据 SELECT INNERS.* BULK COLLECT INTO NEW_ROWS FROM (SELECT * FROM DUAL ) INNERS --使用表类型数据 该集合 NEW_ROWS.COUNT() 验证是否存在记录 --如果NEW_ROWS 为null,当执行NEW_ROWS.FirsT()会抛出ORA-06502: PL/sql: 数字或值错误 FOR I IN NEW_ROWS.FirsT() .. NEW_ROWS.LAST() LOOP NEW_ROWS(I).ID := SYS_GUID(); END LOOP; --批量添加数据 --批量向型号构型信息表中写入数据 FORALL J IN NEW_ROWS.FirsT() .. NEW_ROWS.LAST() INSERT INTO MRO_EQU_MODEL_STRUCT VALUES NEW_ROWS(J); --------------使用end-------------- --声明一个类型为存放VARCHAR2(32)的数组,单列 //types下面建 CREATE OR REPLACE TYPE NEW_TABLES_TP AS OBJECT(STANDARD_ID VARCHAR2(32)) --声明一个表,类型为存放单列数组的 //types下面建 CREATE OR REPLACE TYPE NEW_TABLES_TABLE AS TABLE OF new_tables_tp --下面是对上面声明的使用(存储过程中使用) CREATE OR REPLACE PACKAGE BODY STD_COMMON_P IS -- Private type declarations /*************************************************************************** * 功能描述:标准管理模块级联删除所有与标准相关的数据 * 编写人:SHIC * 编写日期: 2012-12-12 ***************************************************************************/ PROCEDURE Delete_Standard_Res_Data(i_Standard_Info_Id VARCHAR2,o_Return_Int OUT INT,o_Return_String OUT VARCHAR2) IS V_COUNT number; --TYPE ID_LOOKUP IS TABLE OF VARCHAR2(32) INDEX BY VARCHAR2(32); --TYPE STD_STANDARD_RESS IS TABLE OF NEW_TABLES_TP; --存放每行记录的类型 NEW_TABLES NEW_TABLES_TABLE := NEW_TABLES_TABLE(); --使用 BEGIN --给数组赋值 FOR SSR IN (SELECT t.standard_id FROM Std_Standard_Res t WHERE t.Res_Standard_Id = i_Standard_Info_Id) LOOP NEW_TABLES.EXTEND(); --数组赋值之前先 添加(扩展)一条空记录 NEW_TABLES(NEW_TABLES.COUNT):=NEW_TABLES_TP(SSR.STANDARD_ID); END LOOP; --删除本身的标准相关性 delete from STD_STANDARD_RES where STANDARD_ID = i_Standard_Info_Id; --删除与此标准相关的标准相关性 delete from STD_STANDARD_RES where Res_Standard_Id = i_Standard_Info_Id; --删除产品相关性 delete from std_product_standard where STANDARD_ID = i_Standard_Info_Id; --删除数据推送表中反馈表数据 DELETE FROM std_data_push_item WHERE DATA_ID IN (SELECT ID FROM std_standard_Feedback WHERE STD_STANDARD_INFO_ID = i_Standard_Info_Id) AND DATA_TABLE = 'STD_STANDARD_FeedBACK'; --删除标准反馈表与标准相关 delete from std_standard_Feedback where STD_STANDARD_INFO_ID = i_Standard_Info_Id; --删除数据推送表中有效性数据 DELETE FROM std_data_push_item WHERE DATA_ID IN (SELECT ID FROM std_standard_valid_apply WHERE STD_STANDARD_INFO_ID = i_Standard_Info_Id) AND DATA_TABLE = 'STD_STANDARD_VALID_APPLY'; --删除标准有效性 delete from std_standard_valid_apply where STD_STANDARD_INFO_ID = i_Standard_Info_Id; --删除体系明细表 delete from std_structure_standard where STD_STANDARD_ID = i_Standard_Info_Id; --删除数据推送中标准相关 DELETE FROM std_data_push_item WHERE DATA_ID = i_Standard_Info_Id AND DATA_TABLE = 'STD_STANDARD_INFO'; --更新相关性标示 FOR I IN (SELECT STANDARD_ID FROM TABLE(CAST(NEW_TABLES AS NEW_TABLES_TABLE))) LOOP SELECT count(1) INTO v_count FROM Std_Standard_Res ssr,STD_STANDARD_INFO ssi where ssr.standard_id = ssi.id and ssr.standard_id = I.standard_id and ssi.is_updated_flag = '1'; if v_count < 1 then UPDATE STD_STANDARD_INFO ssi SET ssi.IS_RES_FLAG = '0' WHERE ssi.ID = I.standard_id; end if; END LOOP; --删除标准本身 delete from std_standard_info where id = i_Standard_Info_Id; o_Return_Int := Codecollection.Success; o_Return_String := '删除成功:' || sqlERRM; EXCEPTION WHEN OTHERS THEN o_Return_Int := Codecollection.Fail; o_Return_String := '删除失败:' || sqlERRM; END Delete_Standard_Res_Data; /***************************************** 数据推送模块,批量复制已推送部门的数据 SHIC 2012.12.12 ******************************************/ PROCEDURE Data_Push_copy_Datas(i_To_Std_Data_Push_Id VARCHAR2,-- 推送id i_From_Std_Data_Push_Id VARCHAR2,-- 已推送id o_Return_Int OUT INT,o_Return_String OUT VARCHAR2) IS TYPE STD_DATA_PUSH_ITEMS IS TABLE OF STD_DATA_PUSH_ITEM%rOWTYPE; --存放每行记录的类型 NEW_ROWS STD_DATA_PUSH_ITEMS; V_TO_COUNTS NUMBER; V_copY_DATA_PUSH_ID STD_DATA_PUSH.copY_DATA_PUSH_ID%TYPE; --复制主表ID V_STD_DATA_PUSH_ITEM_COUNT NUMBER; --集合记录 Begin --查询已推送数据集合 SELECT INNERS.* BULK COLLECT INTO NEW_ROWS FROM (SELECT sspI.* FROM STD_DATA_PUSH_ITEM sspI WHERE sspI.STD_DATA_PUSH_ID = I_FROM_STD_DATA_PUSH_ID) INNERS; --集合是否为空 SELECT COUNT(1) INTO V_STD_DATA_PUSH_ITEM_COUNT FROM STD_DATA_PUSH_ITEM sspI WHERE sspI.STD_DATA_PUSH_ID = I_FROM_STD_DATA_PUSH_ID; --判断推送表中是否存在推送数据---- SELECT SDP.copY_DATA_PUSH_ID INTO V_copY_DATA_PUSH_ID FROM STD_DATA_PUSH SDP WHERE SDP.ID = I_TO_STD_DATA_PUSH_ID; --如果存在数据推送 IF V_copY_DATA_PUSH_ID IS NOT NULL THEN --删除已有的数据 DELETE FROM STD_DATA_PUSH_ITEM SDPI WHERE SDPI.STD_DATA_PUSH_ID = I_TO_STD_DATA_PUSH_ID; IF V_STD_DATA_PUSH_ITEM_COUNT > 0 THEN -----更新------ FOR I IN NEW_ROWS.FirsT() .. NEW_ROWS.LAST() LOOP NEW_ROWS(I).ID := SYS_GUID(); NEW_ROWS(I).STD_DATA_PUSH_ID := I_TO_STD_DATA_PUSH_ID; --替换新推送id END LOOP; --批量向信息推送子表中写入数据 FORALL J IN NEW_ROWS.FirsT() .. NEW_ROWS.LAST() INSERT INTO STD_DATA_PUSH_ITEM VALUES NEW_ROWS (J); END IF; ELSE ---添加----------- IF V_STD_DATA_PUSH_ITEM_COUNT > 0 THEN --如果NEW_ROWS 为null,当执行NEW_ROWS.FirsT()会抛出ORA-06502: PL/sql: 数字或值错误 --循环进行新值的赋值 FOR I IN NEW_ROWS.FirsT() .. NEW_ROWS.LAST() LOOP SELECT COUNT(1) INTO V_TO_COUNTS FROM STD_DATA_PUSH_ITEM sspI WHERE sspI.STD_DATA_PUSH_ID = I_TO_STD_DATA_PUSH_ID AND sspI.DATA_TABLE = NEW_ROWS(I).DATA_TABLE AND sspI.DATA_ID = NEW_ROWS(I).DATA_ID; IF V_TO_COUNTS <= 0 THEN INSERT INTO STD_DATA_PUSH_ITEM (ID,STD_DATA_PUSH_ID,DATA_TABLE,DATA_ID,CREATED_BY,CREATION_DATE,LAST_UPDATED_BY,LAST_UPDATE_DATE,LAST_UPDATE_IP,VERSION) VALUES (SYS_GUID(),I_TO_STD_DATA_PUSH_ID,NEW_ROWS(I).DATA_TABLE,NEW_ROWS(I).DATA_ID,NEW_ROWS(I).CREATED_BY,NEW_ROWS(I).CREATION_DATE,NEW_ROWS(I).LAST_UPDATED_BY,NEW_ROWS(I).LAST_UPDATE_DATE,NEW_ROWS(I).LAST_UPDATE_IP,NEW_ROWS(I).VERSION); END IF; END LOOP; END IF; END IF; --更新推送主表 推送id UPDATE STD_DATA_PUSH SDP SET SDP.copY_DATA_PUSH_ID = I_FROM_STD_DATA_PUSH_ID WHERE SDP.ID = I_TO_STD_DATA_PUSH_ID; COMMIT; O_RETURN_INT := CODECOLLECTION.SUCCESS; O_RETURN_STRING := '数据推送执行成功'; EXCEPTION WHEN OTHERS THEN ROLLBACK; O_RETURN_INT := CODECOLLECTION.FAIL; O_RETURN_STRING := '数据推送执行失败'; END Data_Push_copy_Datas; END STD_COMMON_P;

ORECALE类型声明及过程中用OR正则验证的更多相关文章

  1. html5使用canvas实现弹幕功能示例

    这篇文章主要介绍了html5使用canvas实现弹幕功能示例的相关资料,需要的朋友可以参考下

  2. 前端实现弹幕效果的方法总结(包含css3和canvas的实现方式)

    这篇文章主要介绍了前端实现弹幕效果的方法总结(包含css3和canvas的实现方式)的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  3. H5 canvas实现贪吃蛇小游戏

    本篇文章主要介绍了H5 canvas实现贪吃蛇小游戏,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  4. ios – parse.com用于键,预期字符串的无效类型,但是得到了数组

    我尝试将我的数据保存到parse.com.我已经预先在parse.com上创建了一个名为’SomeClass’的类.它有一个名为’mySpecialColumn’的列,其数据类型为String.这是我尝试使用以下代码保存数据的代码:如果我运行这个我得到:错误:密钥mySpecialColumn的无效类型,预期字符串,但得到数组这就是我在parse.com上的核心外观:有谁知道我为什么会收到这个错误?

  5. ios – 上下文类型’NSFastEnumeration’不能与数组文字一起使用

    斯威夫特3,你会这样做吗?解决方法正如您所发现的,您不能使用as-casting将数组文字的类型指定为NSFastEnumeration.您需要找到一个符合NSFastEnumeration的正确类,在您的情况下它是NSArray.通常写这样的东西:

  6. ios – 从Live Photo中提取视频部分

    有没有人想出如何从LivePhoto中提取视频部分?

  7. iOS &gt;&gt;块&gt;&gt;更改块外部的变量值

    我不是在处理一个Object并改变它,就像我的mString一样.我希望’center’属性的行为类似于myInt,因为它是直接访问的C结构,而不是指向对象的指针.我希望’backgroundColor’的行为类似于我的imstring,因为它是一个指向一个新对象的对象的指针,不是吗?

  8. ios – 使用Swift的Lumberjack 2.0记录器

    我以前使用物镜C的Lumberjack记录器,我喜欢它.现在我开始学习Swift,我不能在那里使用我最喜欢的记录器.有人可以一步一步地写出我能做到的事吗?在Lumberjack2.0发布之前,我尝试在这里找到一些东西,但所有主题都是自定义包装器.我做了什么:>我用Cocoapods添加了Lumberjack;>我将“#import”添加到Bridging-Header文件中.我不知道接下来该怎么办?因为在ObjC中我有宏:staticconstintddLogLevel=LOG_LEVEL_INFO;el

  9. ios – 获取资产目录文件夹中所有图像的数组

    在iOS中,是否可以获取资产目录文件夹中的图像数组?我不确定为什么会对此进行投票.我真的不知道从哪里开始.我的另一种方法是创建文件夹中所有文件的plist,但它似乎是多余的.我无法添加任何代码,因为我会添加什么?

  10. ios – 来自调试器的消息:由于内存问题而终止

    我的应用程序使用Geojson文件.我使用MapBoxSDK将MGLpolyline添加到地图中.但问题是我的文件太大,以至于应用程序崩溃并收到错误:来自调试器的消息:由于内存问题而终止.我在第一次循环时面对66234个对象.我试图将数组块化为新数组,但没有成功.请帮我解决问题.这是我在地图上绘制的代码,这里是我的testprojectongithubuseXcode8.1如果有任何不同的第三方可

随机推荐

  1. 法国电话号码的正则表达式

    我正在尝试实施一个正则表达式,允许我检查一个号码是否是一个有效的法国电话号码.一定是这样的:要么:这是我实施的但是错了……

  2. 正则表达式 – perl分裂奇怪的行为

    PSperl是5.18.0问题是量词*允许零空间,你必须使用,这意味着1或更多.请注意,F和O之间的空间正好为零.

  3. 正则表达式 – 正则表达式大于和小于

    我想匹配以下任何一个字符:或=或=.这个似乎不起作用:[/]试试这个:它匹配可选地后跟=,或者只是=自身.

  4. 如何使用正则表达式用空格替换字符之间的短划线

    我想用正则表达式替换出现在带空格的字母之间的短划线.例如,用abcd替换ab-cd以下匹配字符–字符序列,但也替换字符[即ab-cd导致d,而不是abcd,因为我希望]我如何适应以上只能取代–部分?

  5. 正则表达式 – /bb | [^ b] {2} /它是如何工作的?

    有人可以解释一下吗?我在t-shirt上看到了这个:它似乎在说:“成为或不成为”怎么样?我好像没找到’e’?

  6. 正则表达式 – 在Scala中验证电子邮件一行

    在我的代码中添加简单的电子邮件验证,我创建了以下函数:这将传递像bob@testmymail.com这样的电子邮件和bobtestmymail.com之类的失败邮件,但是带有空格字符的邮件会漏掉,就像bob@testmymail也会返回true.我可能在这里很傻……当我测试你的正则表达式并且它正在捕捉简单的电子邮件时,我检查了你的代码并看到你正在使用findFirstIn.我相信这是你的问题.findFirstIn将跳转所有空格,直到它匹配字符串中任何位置的某个序列.我相信在你的情况下,最好使用unapp

  7. 正则表达式对小字符串的暴力

    在测试小字符串时,使用正则表达式会带来性能上的好处,还是会强制它们更快?不会通过检查给定字符串的字符是否在指定范围内比使用正则表达式更快来强制它们吗?

  8. 正则表达式 – 为什么`stoutest`不是有效的正则表达式?

    isthedelimiter,thenthematch-only-onceruleof?PATTERN?

  9. 正则表达式 – 替换..与.在R

    我怎样才能替换..我尝试过类似的东西:但它并不像我希望的那样有效.尝试添加fixed=T.

  10. 正则表达式 – 如何在字符串中的特定位置添加字符?

    我正在使用记事本,并希望使用正则表达式替换在字符串中的特定位置插入一个字符.例如,在每行的第6位插入一个逗号是什么意思?如果要在第六个字符后添加字符,请使用搜索和更换从技术上讲,这将用MatchGroup1替换每行的前6个字符,后跟逗号.

返回
顶部