`

临时表,字符串分割

阅读更多
-----------------

----------------



 IF INSTR(P_PAYER2,',')<>0 THEN 
        BEGIN
        WHILE INSTR(P_PAYER2,',')<>0 LOOP
              v_Spot:=INSTR(P_PAYER2,',',1,1);   
              IF in_p =1  THEN
                 V_PAYERS:=SUBSTR(P_PAYER2,1,v_Spot-1);
              ELSE  
                 V_PAYERS:=CONCAT(CONCAT(V_PAYERS,','),SUBSTR(P_PAYER2,1,v_Spot-1));
              END IF;
              in_p:=in_p+1;
              P_PAYER2:=SUBSTR(P_PAYER2,INSTR(P_PAYER2,',')+1,length(P_PAYER2));
  
         END LOOP;
     
         V_PAYERS:=CONCAT(CONCAT(V_PAYERS,','),P_PAYER2);
         END;
     ELSE  
           V_PAYERS:=P_PAYER2;
     END IF;



引用

存储过程里不能直接使用DDL语句,所以只能使用动态SQL语句来执行

--ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截断表(删除全部行)
--ON COMMIT PRESERVE ROWS 说明临时表是会话指定,当中断会话时ORACLE将截断表。
CREATE OR REPLACE PROCEDURE temptest
(p_searchDate IN DATE)
IS
v_count INT;
str varchar2(300);
BEGIN
v_count := 0;
str:='drop table SETT_DAILYTEST';
execute immediate str;
str:='CREATE GLOBAL TEMPORARY TABLE SETT_DAILYTEST (
NACCOUNTID NUMBER not null,
NSUBACCOUNTID NUMBER not null)
ON COMMIT PRESERVE ROWS';
execute immediate str; ----使用动态SQL语句来执行
str:='insert into SETT_DAILYTEST (select naccountid,nsubaccountid from sett_dailyaccountbalance)';
execute immediate str;
END temptest;

上面建立一个临时表的存储过程

下面是执行一些操作,向临时表写数据。
CREATE OR REPLACE PROCEDURE PR_DAILYCHECK
(
p_Date IN DATE,
p_Office IN INTEGER,
p_Currency IN INTEGER,
P_Check IN INTEGER,
p_countNum OUT INTEGER)
IS
v_count INT;
BEGIN
v_count := 0;
IF p_Date IS NULL THEN
dbms_output.put_line('日期不能为空');
ELSE
IF P_Check = 1 THEN
insert into SETT_DAILYTEST (select naccountid,nsubaccountid from sett_dailyaccountbalance
where dtdate = p_Date);
select
count(sd.naccountid) into v_count
from sett_subaccount ss,sett_account sa,sett_dailytest sd
where sd.naccountid = sa.id and sd.nsubaccountid = ss.id and sa.id = ss.naccountid
AND sa.nofficeid = p_Office AND sa.ncurrencyid = p_Currency
and rownum < 2;
COMMIT;
p_countNum := v_count;
dbms_output.put_line(p_countNum);
END IF;
IF P_Check = 2 THEN
insert into SETT_DAILYTEST (select naccountid,nsubaccountid from sett_dailyaccountbalance
where dtdate = p_Date);
select
count(sd.naccountid) into v_count
from sett_cfsubaccount ss,sett_account sa,sett_dailytest sd
where sd.naccountid = sa.id and sd.nsubaccountid = ss.id and sa.id = ss.naccountid
AND sa.nofficeid = p_Office AND sa.ncurrencyid = p_Currency
and rownum < 2;
COMMIT;
p_countNum := v_count;
dbms_output.put_line(p_countNum);
END IF;
END IF;
END PR_DAILYCHECK;


分享到:
评论

相关推荐

    MySQL里实现类似SPLIT的分割字符串的函数

    下边的函数,实现了象数组一样去处理字符串。 一,用临时表作为数组 代码如下: create function f_split(@c varchar(2000),@split varchar(2)) returns @t table(col varchar(20)) as begin while(charindex(@split,@...

    SQL里类似SPLIT的分割字符串函数

    一,用临时表作为数组 代码如下: create function f_split(@c varchar(2000),@split varchar(2)) returns @t table(col varchar(20)) as begin while(charindex(@split,@c)&lt;&gt;0) begin insert @t(col) values ...

    onupload.lua

    Lua处理临时文件的,对Nginx中上传的文件,进行改名,新建子文件夹,页面跳转到下载页面。涉及Lua对文件的处理方法。字符串分割,正则表达式,元表等操作。

    给Oracle添加split和splitstr函数的方法

    最近项目中有很多需要做批量操作的需求,客户端把一组逗号分隔的ID字符串传给数据库,存储过程就需要把它们分割,然后逐个处理。 以往的处理方式有如下几种: 1、在存储过程内写循环,逐个分析字符串中的ID,然后...

    C程序范例宝典(基础代码详解)

    实例038 不用strcat连接两个字符串 46 实例039 删除字符串中连续字符 47 实例040 字符升序排列 49 实例041 在指定的位置后插入字符串 50 1.7 函数 51 实例042 求字符串中字符的个数 51 实例043 递归...

    delphi 开发经验技巧宝典源码

    0183 指定符号分割字符串 119 0184 如何使用随机密码和字符串 120 第6章 日期和时间 121 0185 获得系统当前时间 122 0186 获得系统当前日期 122 0187 将日期时间格式化为指定格式 122 0188 计算两个...

    delphi 开发经验技巧宝典源码06

    0183 指定符号分割字符串 119 0184 如何使用随机密码和字符串 120 第6章 日期和时间 121 0185 获得系统当前时间 122 0186 获得系统当前日期 122 0187 将日期时间格式化为指定格式 122 0188 计算两个...

    c# 加密和解密相关代码

    在字符串中查找指定字符时,可以先将字符串显示在richTextBox 控件中,然后利用richTextBox 类的Find 方法在该控件中查找指定字符。在字符串中查找指定字符的代码如下: 第19章 加密与解密技术 833 M_int_index = ...

    EXCEL集成工具箱V6.0

    能将最多三个任意区域存储格(或列)的内容按自定的分隔符号连接成一个字符串写入指定的存储格或新工作表中。可以生成含重复值与不含重复值并可选是否排序的连接字符串。连接上万个字符只需短短1分钟即完成。 ...

    someones-pc:创建和管理交易字符串以在Pokemon Go中构建您的收藏

    代码分割 添加样式表 后处理CSS 添加CSS预处理器(Sass,Less等) 添加图像,字体和文件 使用public文件夹 更改HTML 在模块系统之外添加资产 何时使用public文件夹 使用全局变量 添加引导程序使用自定义主题 增加...

    EXCEL集成工具箱V8.0完整增强版(精简)

    能将最多三个任意区域存储格(或列)的内容按自定的分隔符号连接成一个字符串写入指定的存储格或新工作表中。可以生成含重复值与不含重复值并可选是否排序的连接字符串。连接上万个字符只需短短1分钟即完成。 ...

    C#编程经验技巧宝典

    72 &lt;br&gt;0102 将字符串首字母转换大写 72 &lt;br&gt;0103 如何进行字节数组和字符串的相互转换 72 &lt;br&gt;0104 如何把一个按空格分割的字符串存储在一个ArrayList数组中 73 &lt;br&gt;4.2 获取字符串信息 73 ...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例074 将字符串的每个字符进行倒序输出 94 实例075 获取字符串中汉字的个数 94 实例076 批量替换某一类字符串 95 实例077 把异常与错误信息显示到窗体中 97 实例078 从字符串中分离文件路径、 文件名及扩展名 98 ...

    C语言通用范例开发金典.part2.rar

    范例1-19 字符串的分割 38 ∷相关函数:partition函数 1.1.20 字符串的插入 40 范例1-20 字符串的插入 40 ∷相关函数:insert函数 1.1.21 字符串的匹配 42 范例1-21 字符串的匹配 42 ∷相关函数:nfind函数 ...

Global site tag (gtag.js) - Google Analytics