Split string into an array (Skip first character)
I have a string like:
,open,close,open
I want to parse the data into an array (without the first ','). I found and tweaked the following code, but the result was:
+<blank line> (think this is coming from the first ',')+
off
on
off
FUNCTION SPLIT (p_in_string VARCHAR2, p_delim VARCHAR2) RETURN t_array
IS
i number :=0;
pos number :=0;
lv_str varchar2(50) := p_in_string;
strings t_array;
BEGIN
-- determine first chuck of string
pos := instr(lv_str,p_delim,1,1);
-- while there are chunks left, loop
WHILE ( pos != 0) LOOP
-- increment counter
i := i + 1;
-- create array element for chuck of string
strings(i) := substr(lv_str,1,pos-1);
-- remove chunk from string
lv_str := substr(lv_str,pos+1,length(lv_str));
-- determine next chunk
pos := instr(lv_str,p_delim,1,1);
-- no last chunk, add to array
IF pos = 0 THEN
strings(i+1) := lv_str;
END IF;
END LOOP;
-- return array
RETURN strings;
END SPLIT;
I am working on a 9i database.
How is your collection defined? Assuming you are doing something like
SQL> create type t_array as table of varchar2(100);
2 /
Type created.then you would just need to add an LTRIM to the code that initializes LV_STR and add appropriate EXTEND calls when you want to extend the nested table
SQL> ed
Wrote file afiedt.buf
1 create or replace FUNCTION SPLIT (p_in_string VARCHAR2, p_delim VARCHAR2)
2 RETURN t_array
3 IS
4 i number :=0;
5 pos number :=0;
6 lv_str varchar2(50) := ltrim(p_in_string,p_delim);
7 strings t_array := t_array();
8 BEGIN
9 -- determine first chuck of string
10 pos := instr(lv_str,p_delim,1,1);
11 -- while there are chunks left, loop
12 WHILE ( pos != 0)
13 LOOP
14 -- increment counter
15 i := i + 1;
16 -- create array element for chuck of string
17 strings.extend;
18 strings(i) := substr(lv_str,1,pos-1);
19 -- remove chunk from string
20 lv_str := substr(lv_str,pos+1,length(lv_str));
21 -- determine next chunk
22 pos := instr(lv_str,p_delim,1,1);
23 -- no last chunk, add to array
24 IF pos = 0
25 THEN
26 strings.extend;
27 strings(i+1) := lv_str;
28 END IF;
29 END LOOP;
30 -- return array
31 RETURN strings;
32* END SPLIT;
SQL> /
Function created.
SQL> select split( ',a,b,c', ',' ) from dual;
SPLIT(',A,B,C',',')
T_ARRAY('a', 'b', 'c')If T_ARRAY is defined as an associative array, you wouldn't need to have the EXTEND calls but then you couldn't call the function from SQL.
Justin
Similar Messages
-
How do I split a comma delimited string into an array.
I have a string that I am passing into a function that is Comma delimited. I want to split the string into an array. Is there a way to do this.
Thanks in advance.trouble confirmed on 10gR1 and 10gR2
works with 'a,b,c' and also with ' "1" , "2" , "3" '
does not work with '1,2,3'
throwing ORA-6512 -
HI,
How to Split String into two parts at delimiterHI,
REPORT ZSTRING.
DATA: LENGTH TYPE I,
REMAINING_LENGTH TYPE I ,
NEXT_POINTER TYPE I ,
FIRST_HALF(20) TYPE C ,
SECOND_HALF(20) TYPE C ,
TEMP TYPE I .
PARAMETER: WORD(35) TYPE C . "INPUT WORD
START-OF-SELECTION.
LENGTH = STRLEN( WORD ). "Length of the input String
SEARCH WORD FOR '/'.
IF SY-SUBRC = 0 .
IF SY-FDPOS > 0.
MOVE WORD+0(SY-FDPOS) TO FIRST_HALF.
ENDIF.
TEMP = SY-FDPOS + 1.
IF TEMP <> LENGTH.
NEXT_POINTER = SY-FDPOS + 1.
REMAINING_LENGTH = ( LENGTH - SY-FDPOS ) - 1.
MOVE WORD+NEXT_POINTER(REMAINING_LENGTH) TO SECOND_HALF.
ENDIF.
ENDIF.
WRITE:/'Input String:', WORD .
WRITE:/'First Half:', FIRST_HALF.
WRITE:/'Second Half:', SECOND_HALF.
*-- End of Program
Reward Points if found helpfull..
Cheers,
Chandra Sekhar. -
How to break up a String into multiple array Strings?
How do I break up a string into a bunch of String arrays after the line ends.
For example,
JTextArea area = new JTextArea();
this is a string that i have entered in the area declared above
now here is another sting that is in the same string/text area
this is all being placed in one text field
Sting input = area.getText();
now how do I break that up into an array of strings after each line ends?Ok I tested it out and it works.
So for future refrence to those that come by the same problem I had:
To split up a string when using a textfield or textarea so that you can store seperate sections of the string based on sperate lines, using the following code:
String text = area.getText() ;
String[] lines = text.split("\n") ;
This will store the following
this is all one
entered string
into two arrays
Cheers{
Edited by: watwatacrazy on Oct 21, 2008 11:06 AM
Edited by: watwatacrazy on Oct 21, 2008 11:16 AM
Edited by: watwatacrazy on Oct 21, 2008 11:16 AM -
Issue with splitting string into multiple lines
Hi Experts,
I have a long string s. I want to split this string into several lines each having 72 characters. For this I have done following programming:
String s = "For the first time it includes a supplementary report attempting to determine if extreme weather
events can be linked to human-induced climate change. The research team, including members
of the UK Met Office, identified recent episodes of extreme weather then used a computer to
estimate the likelihood of the episode happening in a world without increased CO2." ;
s = s.replaceAll("[\r\n]+", " ");
char[] sAr = s.toCharArray();
AbstractList RecepitsList7 = new Bapitrtext.Bapitrtext_List();;
int start = 0; // start with
int i = 72 ;
// for (int i = 71; i < sAr.length; i++) {
while (i < sAr.length) {
// { if (sAr[i] == ' ')
Bapitrtext Recepits7 = new Bapitrtext();
Recepits7.setTextid("TEXT");
Recepits7.setTextline(s.substring(start, i).replaceAll("[\r\n]+", ""));
RecepitsList7.add(Recepits7);
start = i+1;
i += 72;
input.setText(RecepitsList7);
The output of program is as below:
For the first time it includes a supplementary report attempting to dete
mine if extreme weather events can be linked to human-induced climate
hange. The research team, including members of the UK Met Office, iden
ified recent episodes of extreme weather then used a computer to estim
te the likelihood of the episode happening in a world without increased
Here as we can see last characters are getting deleted by program. For example in first line
determine 'r' is missing in extreme right.
In 3rd line c is missing in extreme left (word change is needed. Program
prints hange.
Also in 3rd line extreme right 't' is missing
Also in 4th line extreme right 'a' is missing
Also the last line is not being printed. In last line "CO2." " should appear.
There are two issues:
1. Why last word of each sentence is not being printed?
2. Why last sentence is not being printed?
I am struggling since last 2 days. Please help. I made all changes like replacing 72 by 71 etc.
By making such changes, I am able to print first line correctly. However under all cases
last character of 2nd line onward is not getting displayed.
Also last line is not getting displayed. I did every thing like using while instead of for loop etc.
Kindly help.
Regards,
Gary
Edited by: 945655 on Jul 10, 2012 11:39 PMString s = wdContext.currentContextElement().getExpense_Text();
s = s.replaceAll("[\r\n]+", " ");
char[] sAr = s.toCharArray();
AbstractList RecepitsList7 = new Bapitrtext.Bapitrtext_List();;
int start = 0; // start with
int i = 72;
while (i < sAr.length) {
Bapitrtext Recepits7 = new Bapitrtext();
Recepits7.setTextid("TEXT");
System.out.println(s.substring(start, i));
RecepitsList7.add(Recepits7);
start = i+1;
i += 72;
input.setText(RecepitsList7);
Edited by: 945655 on Jul 11, 2012 2:25 AM -
Split string into two based on end of word and max length
I have the following procedure, which is passed a comma separated string as it input, and it has to split it into two, and the split has to occur at the end of a word, and the first split part can't be more than 15 in length.
Is there an more efficient way of achieving this? I have a loop in my main code that calls this procedure and in effect a nested loop has been created here.
e.g. Hello, everyone, welcome, to, split, string' would be split into 'Hello' and 'everyone, welcome, to, split, string'
create or replace procedure split_str
(pi_str in varchar2,
po_str1 out nocopy varchar2,
po_str2 out nocopy varchar2) is
i number;
begin
if (len(pi_str) <= 15) then
po_str1 := pi_str;
po_str2 := NULL;
else
i := 1;
loop
exit when len(SUBSTR(pi_str, 1 ,INSTR(pi_str, ',', 1, i)-1)) > 15;
po_str1 := SUBSTR(pi_str, 1 ,INSTR(pi_str, ',', 1, i)-1);
po_str2 := SUBSTR(pi_str, INSTR(pi_str, ',', 1, i)+2);
i := i+1;
end loop;
end if;
end split_str;You want to find the last space character before the 15th character.
x := INSTR ( SUBSTR ( pi_str, 1, 15) , ' ' , -1)Then the first string is SUBSTR(pi_str,1,x) and the second string is SUBSTR(pi_str,x+1) -
Split string into its number and alphabetic​al components
I have a string constant "There are 100 pens and 200 pencils in the box".i want to split it into two parts one consisting of array of numbers i.e. 100 and 200,while the second part should display "There are pens and pencils in the box".
How should i proceed?That looks like homework.
What have you tried so far and where did you get stuck?
LabVIEW Champion . Do more with less code and in less time . -
Hi All,
Hoping you are able to help.
I have a table of approx 16 items that I need to split,
EG:
CUSTOMER ACCEPTANCE - HAS BEEN DECLINED - DO NOT APPLY TO ACCOUNT
CUSTOMER ACCEPTANCE - HAS BEEN ACCEPTED - APPLY TO ACCOUNT
CUSTOMER ACCEPTANCE - PENDING DECLINE - ESCALATION REQUIRED - RAISED IN PORTAL
ESCALATION - RAISED - PENDING
ESCALATION - NOT RAISED - STILL TO BE PROCESSED
I need to Keep the first two sections, eg CUSTOMER ACCEPTANCE - HAS BEEN DECLINED in one column, and split off the remaining, eg DO NOT APPLY TO ACCOUNT into a new TEMP table to insert as a column into an existing table.
With little SQL experience, I am having difficulties as they are all of different lengths / criteria etc. Some have 3 hyphens whilst others have 4+
Is anyone able to help point me in the right direction with this request? I will be greatly appreciated.
Kind Regards,
BTMMPIf you're trying to do this all in a SQL query or stored procedure, then you'll probably get better results on the SQL Server forums. However, if you're working with a PowerShell or VBScript that's doing the work, you're in the right place.
Here's one example of how you could do what you're describing. By the way, what do you want to do with the string "CUSTOMER ACCEPTANCE - PENDING DECLINE - ESCALATION REQUIRED - RAISED IN PORTAL"? Should that be split into "CUSTOMER ACCEPTANCE
- PENDING DECLINE" and "ESCALATION REQUIRED - RAISED IN PORTAL", or "CUSTOMER ACCEPTANCE - PENDING DECLINE - ESCALATION REQUIRED" and "RAISED IN PORTAL"?
(In other words, should the script only split off whatever's after the final hyphen, or should it grab the first two pieces of text and split off everything else?)
Here's an example in PowerShell which assumes that you want to separate out all text after the final hyphen in a string. It uses a regular expression, though you could accomplish the same thing with Split, Join and Trim operations, if you prefer.
$string = 'CUSTOMER ACCEPTANCE - HAS BEEN ACCEPTED - APPLY TO ACCOUNT'
if ($string -match '(.*?)\s*-\s*([^-]*)$')
$split = $matches[1], $matches[2]
else
$split = $string, ''
Write-Host "Original String: $string"
Write-Host "First Text : $($split[0])"
Write-Host "Second Text : $($split[1])" -
Convert binary string into binary array
Dear I am looking for a way to convert my ten bit string array into 10 bit array.
Any idea?Yes, but you need to tell us in more details what you have and what you want.
There is no "10bit string", they come in integer multiples of 8 bits. Some possible interpretations:
Maybe you have a 2 character string (16bits). Do you want the 10 low order bits?
Maybe you have a 10 character formatted string of zeroes and ones, one character for each bit.
Do you have a long string and every 10 consecutive bits are one 10bit number that you want as integer?
Please clarify!
There is no "10bit array". Do you want:
a boolean array with 10 elements, one element per bit?
An integer array if ones and zeroes?
An array of U16, each element corresponding to 10bits of the original string?
something else?
It might help if you could attach a small example containing typical data. (make current values default before saving and attaching here).
LabVIEW Champion . Do more with less code and in less time . -
Is there an easy way to convert a long string into an array?
I can convert a long string into a 1-d array by parsing and using build array, but I would like to know if there is a function to make this easier.
For example:
from/ aaaaaaaabbbbbbbbccccccccdddddddd (string of ascii)
to/ an array that is 1-d with each element having eight characters
aaaaaaaa
bbbbbbbb
cccccccc
dddddddd
Thank you.
Solved!
Go to Solution.Try something like this:
(If you can guarantee that the string length is an integer multiple of 8, you an drop the two triangular modes in the upper left. )
Message Edited by altenbach on 03-14-2010 06:40 PM
LabVIEW Champion . Do more with less code and in less time .
Attachments:
ChopString.png 9 KB -
Hello,
I am trying to split a string into an internal table with:
split content at '##' into table it_content
but as the expected 6 line I only get 1 line into the table with the complete string.
Any ideas?
regards
stefanHi,
You need to write the Program like below
DAta: DEL(3) VALUE '***'.
SPLIT content AT DEL INTO TABLE <itab>.
The system adds a new line to the internal table <itab> for each part of the string.
Regards
Sudheer -
How to split strings into columns
Hi guys,
I have a select like this:
select 'testing1'||'.'||'testing2'||'.'||'testing3' from dualwhich gives me an output like this:
testing1.testing2.testing3How can I split this into 3 columns in SQL PLUS?
Thank you in advanceuser643734 wrote:
Thank you guys for all your help.
Hi,
I tried to resolve your problem using somme functions...
I know is a long, long story but it works.
Regards,
Ion--create table_pivot
CREATE TABLE pivot_table(id VARCHAR2(1) primary key, all_concat VARCHAR2(1810));
--add data
insert into pivot_table (id, all_concat) values('x','12345.2829303132.234234.234234.234234');
insert into pivot_table (id, all_concat) values('y','67890.2324252627.234234.234234.234234.332545');
insert into pivot_table (id, all_concat) values('z','11121314.12345.234234.234234.234234.23432.32453245.345435.345435');
insert into pivot_table (id, all_concat) values('a','151617.67890.234234.234234');
insert into pivot_table (id, all_concat) values('b','1819202122.1112131415.234234.234234.234234.345435');
insert into pivot_table (id, all_concat) values('c','2324252627');
insert into pivot_table (id, all_concat) values('h','2829303132.234234.234234.234234.23432.32453245.345435.345435.4325435.345');
insert into pivot_table (id, all_concat) values('r','');
set termout off
--procedures and functions to compile
--1. Main function to format strings
create or replace function fgetformatstring
(v_max_rows numeric, v_crt_row varchar2, v_table_source varchar2, v_save_to_table varchar2, v_option numeric)
return varchar2
is
v_crt_char numeric:=0;
v_pos_char numeric:=1;
v_count numeric:=0;
v_string_out varchar2(500);
v_str_paded varchar2(10):=',null';
v_length_pad numeric;
v_diff_pad numeric;
l_crt_row varchar2(1800);
v_char char:=',';
v_delimiter char:='.';
l_save_to_table varchar2(1000);
l_max_rows numeric;
begin
l_crt_row:=replace(v_crt_row,'.' ,',');
l_save_to_table:=v_save_to_table;
l_max_rows:=v_max_rows;
if v_option=0 then --get the ',null' to paded in pivot_table
loop
v_pos_char:=v_crt_char;
v_crt_char:=instr(v_crt_row,v_char, v_crt_char+1);
v_count:=v_count+1;
exit when v_crt_char=0 or v_count=1000;
end loop;
v_string_out:=' ';
v_count:=v_count-1;
v_diff_pad :=l_max_rows-1-v_count;
if v_diff_pad >0 then --nothing to add
v_length_pad:=length(v_str_paded);-- (+v_char)
v_length_pad:=v_diff_pad*v_length_pad;
v_length_pad:=v_length_pad+1;
v_string_out:=rpad(v_string_out,v_length_pad,v_str_paded);
end if;
end if;
if v_option=1 then --get definition of v_save_to_table
v_count:=1;
v_string_out:=' ';
loop
exit when v_count=l_max_rows+1 or v_count>=1000;
v_length_pad:=length(v_string_out||'col'||to_char(v_count)||',');
v_string_out:=rpad(v_string_out,v_length_pad,'col'||to_char(v_count)||',');
v_count:=v_count+1;
end loop;
v_string_out:=trim(v_char from v_string_out);
--v_string_out:='id,'||v_string_out;
v_string_out:=v_string_out;
end if;
if v_option=2 then --get position of last comma
loop
v_pos_char:=v_crt_char;
v_crt_char:=instr(v_crt_row,v_char, v_crt_char+1);
v_count:=v_count+1;
exit when v_crt_char=0 or v_count=1000;
end loop;
v_string_out:=substr(v_crt_row,1,v_pos_char-1);
end if;
if v_option=3 then --get numbers of delimiters(.)
loop
v_pos_char:=v_crt_char;
v_crt_char:=instr(v_crt_row,v_delimiter, v_crt_char+1);
--dbms_output.put_line( 'Rows: ' ||v_crt_row|| ' iteration: '||v_count);
v_count:=v_count+1;
exit when v_crt_char=0 or v_count=1000;
end loop;
v_count:=v_count;
v_string_out:=to_char(v_count);
end if;
if v_option=4 then --get sql command to create v_save_to_table
v_count:=1;
v_string_out:=' ';
loop
exit when v_count=l_max_rows+1 or v_count>=1000;
v_length_pad:=length(v_string_out||'col'||to_char(v_count)||' varchar2(40), ');
v_string_out:=rpad(v_string_out,v_length_pad,'col'||to_char(v_count)||' varchar2(40), ');
v_count:=v_count+1;
end loop;
v_string_out:=trim(' ' from v_string_out);
v_string_out:=trim(v_char from v_string_out);
v_string_out:='create table '|| l_save_to_table ||'('||v_string_out||')';
end if;
if v_option=5 then --get numbers of delimiters(,)
loop
v_pos_char:=v_crt_char;
v_crt_char:=instr(v_crt_row,',', v_crt_char+1);
v_count:=v_count+1;
exit when v_crt_char=0 or v_count=1000;
end loop;
v_count:=v_count-1;
v_string_out:=to_char(v_count);
end if;
dbms_output.put_line( 'string: ' ||v_string_out|| ' option: '||v_option);
return v_string_out;
end;
--2.get max items
create or replace function fgetmaxitems
--get the max number of items founded in the pivot_table.all_concat
--before change the points with comma
return numeric
is
v_max numeric:=0;
v_field pivot_table.all_concat%type;
v_crt_max numeric:=0;
v_crt_row varchar(1000);
cursor c1 is
select all_concat from pivot_table;
begin
v_crt_max:=0;
v_max:=0;
open c1;
loop
fetch c1 into v_field;
exit when c1%notfound;
v_crt_row:=v_field;
v_crt_max:=fgetformatstring(0,v_crt_row,'pivot_table','',3);
if v_crt_max>v_max then
v_max:=v_crt_max;
end if;
end loop;
close c1;
return v_max;
end;
--3. insert the rows in table_dest
create or replace procedure pinsertrow
v_max_rows numeric,
v_all_concat varchar2,
v_source_table_name varchar2,
v_save_to_tablename varchar2
is
v_sql_string varchar2(1000);
l_all_concat varchar2(1500);
begin
l_all_concat:=replace(v_all_concat,'.' ,',');
v_sql_string:='('||l_all_concat||')';
v_sql_string:=' insert into ' ||v_save_to_tablename
||' (' ||fgetformatstring(v_max_rows,l_all_concat,v_source_table_name,v_save_to_tablename,1)||')'||
' values'||v_sql_string ;
execute immediate v_sql_string;
end;
--4.procedure to create dinamically <table_dest>
create or replace procedure pcreatesavetable
(v_table_source varchar2, v_save_to_table varchar2)
is
v_sql_string varchar2(1000);
already_exists exception;
pragma exception_init(already_exists,-955);
v_max numeric;
begin
--clear empty values;
v_sql_string:='delete from ' ||v_table_source|| ' where length(all_concat)=0 or (all_concat) is null';
execute immediate v_sql_string;
v_sql_string:='';
v_max:=fgetmaxitems;
--create new table
v_sql_string:=fgetformatstring(v_max,'all_concat', v_table_source,v_save_to_table,4);
dbms_output.put_line( 'sql create : '|| v_sql_string);
execute immediate v_sql_string;
exception
when already_exists then
--delete old table
v_sql_string:='drop table ' ||v_save_to_table;
execute immediate v_sql_string;
--create new table
v_sql_string:=fgetformatstring(v_max,'all_concat', v_table_source,v_save_to_table,4);
dbms_output.put_line( 'sql recreate final_table : '|| v_sql_string);
execute immediate v_sql_string;
end;
--5.main procedure
create or replace procedure pmainproc(v_save_to_table varchar2)
is
v_key_pivot pivot_table.id%type;
v_column_pivot pivot_table.all_concat%type;
v_max numeric;
v_crt_row varchar2(1600);
cursor c2 is select y.id , y.all_concat
from pivot_table y
; --cursor upon pivot_table
begin
v_max:=fgetmaxitems;
if v_max <> 0 then
--clear empty values;
delete from pivot_table where length(all_concat)=0 or (all_concat) is null;
--change all points with comma
update
(select x.id, x.all_concat from pivot_table x, pivot_table y where x.id=y.id) b
set b.all_concat=replace(b.all_concat,'.', ',');
-- padd the all_concat with ',null'
update
(select x.id, x.all_concat from pivot_table x, pivot_table y where x.id=y.id and
fgetformatstring(v_max,x.all_concat,'pivot_table',v_save_to_table,5) <> v_max
) b
set b.all_concat=b.all_concat || fgetformatstring(v_max,b.all_concat,'pivot_table',v_save_to_table,0);
--remove last
update pivot_table
set all_concat= fgetformatstring(v_max,all_concat,'pivot_table',v_save_to_table,2)
where fgetformatstring(v_max,all_concat,'pivot_table',v_save_to_table,5) = v_max;
open c2;
loop
fetch c2 into v_key_pivot, v_column_pivot;
exit when c2%notfound;
v_crt_row:=v_column_pivot;
-- insert data in to final_table
pinsertrow(v_max,v_crt_row,'pivot_table',v_save_to_table);
end loop;
close c2;
end if;
end;
--create table_dest
--the table_dest will be created automatically, so you need admin privilege to run that before compile pcreatesavetable :
connect / as sysdba or connect system/password
--grant create table to hr;
--conne hr/hr;
exec pcreatesavetable('pivot_table','table_dest');
--add data to table_dest
exec pmainproc('table_dest');
set termout on
select * from table_dest;
Table created.
1 row created.
1 row created.
1 row created.
1 row created.
1 row created.
1 row created.
1 row created.
1 row created.
Function created.
Function created.
Procedure created.
Procedure created.
Procedure created.
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
COL1 COL2 COL3 COL4 COL5 COL6 COL7 COL8 COL9 COL10
12345 2829303132 234234 234234 234234
67890 2324252627 234234 234234 234234 332545
11121314 12345 234234 234234 234234 23432 32453245 345435 345435
151617 67890 234234 234234
1819202122 1112131415 234234 234234 234234 345435
2324252627
2829303132 234234 234234 234234 23432 32453245 345435 345435 4325435 345
7 rows selected. -
How to split a delimited string into an array...
I have a delimited string coming in to a stored procedure (SP) for vb.net that needs to be parsed/converted into multi-dimensional arrays. The reason I am using delimited string because I do not know how to pass arrays to oracle SP from vb.net using ODP or MPO (Microsoft's Provider for Oracle).
My delimited string looks something like this: "level1_1|level2_1:level3_1;level3_2|level2_2:level3_1;level3_2~Level1_2|level2_2:level3_1"
So, its going to be 3d array. I would greatly appreciate if anyone could help me solving this puzzle. Any examples would be a great help.
Thanks for everything in advance,
VincentHi Andrew,
I appreciate your response. Currently I use "Microsoft provider for Oracle" to connect to Oracle Database because when I started with my application there wasn't ODP (Oracle Data Provider for .Net) available. So, I used Microsoft provider and still using it.
I know how to use arrays in .Net but the problem is I can not find the Oracle Type to pass the array to Oralce Stored Procedure using this provider.
It would be very helpful if someone shows me the syntax for both to receive from oracle and transport to Oracle. I haven't tried using ODP yet. May be now its the time to see how it works.
And of course, your link was very helpful but I am already doing that (which is very slow for multi-dimentional array). So, I thought there might be a built in function in oracle which does that. Because most of the programming languages does have built in function for this conversion. for example: Split() in vb, java, javascript etc.
Anyway, if anyone finds any clues as to how to pass milti-dimentional arrays from .Net (microsoft) to oracle stored procedure please, please let me know how to do that.
-Vincent -
How to split an array (*not String*) into smaller arrays?
Hello,
let's say you have an array of bytes whith length (for example) 5000B. Now you want to split this array into smaller ones, for example 1500B. Then you will have 3 arrays of 1500B and another one of 500B. What I try to do then is the following:
pointer = 0;
size = source.length; // For example, size = 5000
maxsize = 1500;
while ((size - pointer) > maxsize) {
byte[] dest = new byte[maxsize];
System.arraycopy(src, pointer, dest, pointer, maxsize); // <--- Errors here!
pointer += maxsize;
// Do some stuff here with the dest array
}There's no errors at compile time. But at runtime, the first iteration everything works OK (the 1500 first bytes are copied to the dest array). However, in the second iteration, the java interpreter claims:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)And I don't know what I'm doing bad. I guess there's a stupid question I can't see by myself... Help wanted, please!> System.arraycopy(src, pointer, dest, pointer, maxsize);should be
System.arraycopy(src, pointer, dest, 0, maxsize);Since you're copying to the first position in the destination array. -
Convert HEX String into HEX Array
Hi!
Probably a silly question, but I am looking for a way to convert a ROM ID number such as "5E03C21000BA" into an short hexadecimal array.
The way to do this in C would probably be
char[17] str_romID = "5E03C21000BA";
uchar[8] romID;
sscanf(str_romID, "%02X%02X%02X%02X%02X%02X%02X%02X",
&romID[0], &romID[1], &romID[2], &romID[3],
&romID[4], &romID[5], &romID[6], &romID[7]);
but I can't seem to find a way to do this in LabVIEW. I would be very grateful if you could help me out with a sample program. Thanks ever so much!
StefanHello Blondchen,
I have attached a picture to my last explanation. This example doesn't take care of strings with an uneven number of chars!
My array has only 6 numbers as you only gave a string with 12 chars... That's what I asked before: how should we know where to split your string to the single numbers? Normally I would take 2 chars to form a byte (as I did in the example). If you give me 16 chars I give you 8 bytes...
I also think your C byte array will be an U8 array in LabView. If you REALLY need I8 numbers you can change the default type of the "hex to string" or cast to I8 (advanced->data manipulation->type cast) after the conversion.
Best regards,
GerdW
Best regards,
GerdW
CLAD, using 2009SP1 + LV2011SP1 + LV2014SP1 on WinXP+Win7+cRIO
Kudos are welcome
Attachments:
ConvertHexHex.png 13 KB
Maybe you are looking for
-
Pass unicode data in SQL Server 2008 stored procedure parameter
Hi, I want to pass unicode data in a SQL stored procedure. But I am not sure that how to append N with NVarchar datatype. For example I Create a table LocalizationTest and wants to insert a few records. Create table LocalizationTest Field1 NVarch
-
Convert spool to pdf and send in email sometimes attachment duplicated.
Hi all, I have a process that creates a spool, converts it to a pdf and then attaches it to an email. My problem is that sometimes, the same attachment is duplicated. The process seems to work fine in debug mode (the attachment changes for each loop)
-
Unable to open DNG files in PSE10
i have tried to open raw files(dng) in elements 10,but cannot. after much reading of the internet it looks as if i need an update to acr but when i try to update ele 10 it says no update available. sys is windows 7 64 bit. Message title was edited by
-
What does "Other" mean for iPhone storage?
My other section in the iPhone keeps on growing every week. Now it's 4.7 GB, more than apps, audio, video, photo... how do I understand what's in there? Any way to see the detail?
-
Alternatives to Matrox MX02?
The Matrox has great features on paper, but there are lots of reports of conflicts. Any suggestions for more reliable performance, in the same price range?