Loops 在循环期间重新初始化PL/SQL中的变量/记录
为了为ETL过程创建PL/SQL解析器(其中数据主要是位置编码的),我需要逐行读取文件,并将记录添加到内存(包范围)表中的当前记录或新记录中 让我简要地解释一下场景和语法规则:我需要解析银行对齐消息,该消息具有公共标准格式(找不到英语文档,只能找到其他意大利语文档,而这应该是欧盟范围的标准)。无论如何,这里有一些规则解释:Loops 在循环期间重新初始化PL/SQL中的变量/记录,loops,plsql,io,Loops,Plsql,Io,为了为ETL过程创建PL/SQL解析器(其中数据主要是位置编码的),我需要逐行读取文件,并将记录添加到内存(包范围)表中的当前记录或新记录中 让我简要地解释一下场景和语法规则:我需要解析银行对齐消息,该消息具有公共标准格式(找不到英语文档,只能找到其他意大利语文档,而这应该是欧盟范围的标准)。无论如何,这里有一些规则解释: 文件中的每条记录长度为120个字符 每个文件都以“AL”(对齐)记录开始 每个文件都以en“EF”(文件结束)记录结尾 每个对齐信息以“12”记录开始,以“70”记录结束
- 文件中的每条记录长度为120个字符
- 每个文件都以“AL”(对齐)记录开始
- 每个文件都以en“EF”(文件结束)记录结尾
- 每个对齐信息以“12”记录开始,以“70”记录结束
- 根据“12”记录的类型,消息可以由其他记录的不同组合组成,如“30”和“40”、“50”、“45”、“50”和“45”、“50”
MESSAGE
PL/SQL表,该表包含CHAR(120)
,它将封装12到70之间的记录(包括在内),这些记录将在稍后阶段处理。现在我有一个循环问题,可以用Java轻松解决
如何在PL/SQL中重新初始化变量?下面是一个伪Java示例,说明了我需要做的事情
String line;
List<String> alignment_message;
List<AlignmentMessage> table;
while (line = readline()) {
if (line.substring(1,2)=="12") //Begin of message
alignment_message = new MESSAGE(); //******HOW DO I DO THIS????
alignment_message.add(line); //Don't care about NPE ;-)
if (line.substring(1,2)=="70") //End of message
table.add(alignment_message);
}
字符串行;
列出你的信息;
列表表;
while(line=readline()){
if(line.substring(1,2)=“12”)//消息的开头
alignment_message=new message();//****我该怎么做????
对齐_message.add(line);//不关心NPE;-)
if(line.substring(1,2)=“70”)//消息结束
表.添加(对齐信息);
}
我目前已经在PL/SQL过程中声明了类型为MESSAGE
的变量msg
。如果我将INSERT
插入此变量,然后将INSERT
此变量插入包含MESSAGE
类型的列(以及我用于预处理的其他两列)的表中,我如何在freshnew msg变量中执行新的INSERT
操作
谢谢如果您将
消息
声明为字符表(120)
,字符表(120)按二进制整数值索引
或字符表(120)
,那么您就可以这样做了
msg.DELETE;
嵌套表、按表索引和varray上的方法从中删除所有元素
当您在表中插入msg
时,Oracle似乎存储了它的副本,而不是对它的引用。从msg
中删除所有元素不会导致表中的数据突然消失
或者,如果MESSAGE
是CHAR(120)的表或CHAR(120)
的VARRAY(…),则可以调用MESSAGE()
构造函数,即
msg := MESSAGE();
如果您已将消息
声明为字符表(120)
,字符表(120)按二进制整数索引
或字符表(120)
,则可以执行以下操作:
msg.DELETE;
嵌套表、按表索引和varray上的方法从中删除所有元素
当您在表中插入
msg
时,Oracle似乎存储了它的副本,而不是对它的引用。从msg
中删除所有元素不会导致表中的数据突然消失
或者,如果MESSAGE
是CHAR(120)的表或CHAR(120)
的VARRAY(…),则可以调用MESSAGE()
构造函数,即
msg := MESSAGE();
start of a block
end of a block
aligment message: 40 record
start of a block
end of a block
aligment message: 50 record
aligment message: 51 record