Line break as SQL terminator?
Hi,
I typically build up a large worksheet of SQL statements and it is a pain in the neck to have all of them as properly formed SQL along with a semi-colon. Sometimes also plain text is pasted in to be used as literal values in SQL but in itself is not a statement.
Is there anyway to for SQLDev to treat a return with blank line in the same way it would a semi-colon? If the SQL is malformed I want it to leave that whole block alone and just execute the current block of SQL that the cursor resides in.
Brenden
If you highlight (select) the statement or part of it, only that will be parsed and executed.
If you don't, you do understand sqldev has to parse the whole block to know the beginning and end of the statement. Without semi-colons, it assumes the statement continues...
Have fun,
K.
Similar Messages
-
Why would white space and line breaks in sql query increase runtime
Using 11.2.0.3.0 on unix sprac server, 8 cpus 32 cores 12TB storage. We have 16 batch servers doing inserts and ~100 users doing mostly queries.
We have a wierd issue, we have a long query that takes 30 seconds to run 1st time then 10-20 secs every other time. Based on knowledge of DB we expected it to take a lot less. Then a developer reformatted it by taking removing extra white space and line breaks. all of sudden query takes 6 secs first time and 0.8 every other time. we tripled checked to ensure they are identical and that only difference is white space and line breaks. We tried it with SQLDeveloper, TOAD, SQLPLUS, from out desktops, appserver. we could reproduce it every time, with white space 10-20 secs without it 0.8 secs. Query is 200 lines long with white space 30 without it.
Why would having white space make such a dramatic difference? because the query is longer eventhough its identical? We checked parsing times, etc, no difference. Is there some network setting, oracle parameter, sqlnet setting? We spent hours looking on google and found nother
Slow:
SELECT grt_student.student_id
AS student_id,
grt_student.last_name
AS last_name,
grt_student.first_name
AS first_name,
grt_buyerinstance.buyerinstance_id
AS buyerinstance_id,
grt_buyerinstance.buyerfamily_id
AS buyerfamily_id,
grt_buyer.buyerfamily_acronym
AS buyerfamily_acronym,
grt_reporting_utls_pkg.convert_gmrt_battery(grt_buyerinstance.buyerfamily_id,grt_buyer.battery)
AS battery,
fast:
SELECT grt_student.student_id
AS student_id, grt_student.last_name
AS last_name, grt_student.first_name AS first_name, grt_buyerinstance.buyerinstance_id AS buyerinstance_id, grt_buyerinstance.buyerfamily_id
AS buyerfamily_id,
grt_buyer.buyerfamily_acronym AS buyerfamily_acronym, grt_reporting_utls_pkg.convert_gmrt_battery(grt_buyerinstance.buyerfamily_id,grt_buyer.battery) AS battery,Do you have some sort of horrific network connection between the client and the database such that it would take 8.5 seconds to transmit a few kb of SQL to the server? That seems most unlikely.
How are you determining the query plan? Are you absolutely sure that both SQL statements have the same plan_hash_value when they are actually executed (not just when you generate a query plan without executing it)? What are the differences in wait events when you execute the two?
The sql_id will change when you add or remove whitespace. There are various methods of modifying query plans that are tied to a sql_id. My wager would be that you have a profile/ outline/ etc. that is not there for the reformatted one which is causing a query plan difference. My next guess is that you have an accepted plan for the old statement, you haven't set up a process to let the plan evolve, and the reformatted statement starts with the plan that the old statement would get if you allowed the plan to evolve.
Justin -
Unexpected line breaks in output of a sql query
Hi,
I have a query which looks like:
set pages 0
set feed off
set newp 0
set lines 350
select LPAD(SUBSTR(COLUMN1,1,23),23),LPAD(SUBSTR(COLUMN2,1,42),42), SUBSTR(TO_CHAR(START_TIME,'HH24:MI:SS'),1,8),SUBSTR(TO_CHAR(END_TIME,'HH24:MI:SS'),1,8)
FROM TABLE1;
When executed using SQL*Plus this query puts a line break after each column and hence I get a record on several rows on the screen.
But the last two columns are printed on the same line. I suspect the LPAD is causing some problem.
I have two databases. It works perfectly on one and not on the other.
Is there a oracle parameter due to which the result is affected?
T&R,
BRKTry this:
set pages 0 feed off newp 0 lines 350 trims on
select LPAD(SUBSTR(COLUMN1,1,23),23)
, LPAD(SUBSTR(COLUMN2,1,42),42)
, TO_CHAR(START_TIME,'HH24:MI:SS')
, TO_CHAR(END_TIME,'HH24:MI:SS')
FROM TABLE1; -
Convert rows to columns and put line break in between using t-sql
Hi,
I have a table with 5 columns..and my source data looks like this..
RecordID ID Display AddressType EmailAddress
1 1 GeneratedBy From
[email protected]
1 1 ReceivedBy To
[email protected]
1 1 ReceivedBy To
[email protected]
2 1
3 1 GeneratedBy From
[email protected]
3 1 GeneratedBy From [email protected]
3 1 ReceivedBy To
[email protected]
I need t-sql to show output as..
RecordID ID FullDisplay
1 1 GeneratedBy From -
[email protected] < CHAR(13) - Need Line Break here so that it goes to 2nd line>
ReceivedBy To -
[email protected] ; To -
[email protected]
2 1 Null
3 1 GeneratedBy From -
[email protected] ; From -
[email protected] < CHAR(13) - Need Line Break here so that it goes to 2nd line>
ReceivedBy To -
[email protected]
Display field will have 3 values - "GeneratedBy" , "ReceivedBy" or Null
AddresType field will have 3 values - "From" , "To" and Null.
In the above example, Those 7 records belongs to ID=1.
Whenever RecordID is same I want to show everything in one line with line breaks in between.
In the above example RecordID=1 has 3 rows, display it as 1 row. But Whenever 'ReceivedBy' is there for same recordID put a line break before "ReceivedBy"
create Statement:
Create Table SampleTest
(RecordID int null, ID int null , Dispplay varchar(20) null, AddressType varchar(6) null , EmailAddress Varchar(25) null)
Insert Statement:
Insert into SampleTest (RecordID ,ID,Display,AddressType,EmailAddress) values (1,1,'GeneratedBy','From','[email protected]')
Insert into SampleTest (RecordID ,ID,Display,AddressType,EmailAddress) values (1,1,'ReceivedBy','To','[email protected]')
Insert into SampleTest (RecordID ,ID,Display,AddressType,EmailAddress) values (1,1,'ReceivedBy','To','[email protected]')
Insert into SampleTest (RecordID ,ID,Display,AddressType,EmailAddress) values (2,1, Null,Null,Null)
Insert into SampleTest (RecordID ,ID,Display,AddressType,EmailAddress) values (3,1,'GeneratedBy','From','[email protected]')
Insert into SampleTest (RecordID ,ID,Display,AddressType,EmailAddress) values (3,1,'GeneratedBy','From','[email protected]')
Insert into SampleTest (RecordID ,ID,Display,AddressType,EmailAddress) values (3,1,'ReceivedBy','To','[email protected]')
Thanks!
sqlTry below
drop table SampleTest
GO
Create Table SampleTest
(RecordID int null, ID int null , Display varchar(20) null, AddressType varchar(6) null , EmailAddress Varchar(25) null)
--Insert Statement:
Insert into SampleTest (RecordID ,ID,Display,AddressType,EmailAddress) values (1,1,'GeneratedBy','From','[email protected]')
Insert into SampleTest (RecordID ,ID,Display,AddressType,EmailAddress) values (1,1,'ReceivedBy','To','[email protected]')
Insert into SampleTest (RecordID ,ID,Display,AddressType,EmailAddress) values (1,1,'ReceivedBy','To','[email protected]')
Insert into SampleTest (RecordID ,ID,Display,AddressType,EmailAddress) values (2,1, Null,Null,Null)
Insert into SampleTest (RecordID ,ID,Display,AddressType,EmailAddress) values (3,1,'GeneratedBy','From','[email protected]')
Insert into SampleTest (RecordID ,ID,Display,AddressType,EmailAddress) values (3,1,'GeneratedBy','From','[email protected]')
Insert into SampleTest (RecordID ,ID,Display,AddressType,EmailAddress) values (3,1,'ReceivedBy','To','[email protected]')
with CTE1 as
select ROW_NUMBER() over(PARTITION by RecordID ,ID,Display order by EmailAddress)rno,* From SampleTest
), CTE2 as (
select RecordID ,ID,'GeneratedBy '+ STUFF(( SELECT '; From - ' + EmailAddress AS [text()]
FROM CTE1 b
WHERE
a.RecordID=b.RecordID and a.ID=b.ID and b.Display = 'GeneratedBy'
FOR XML PATH('')
), 1, 2, '' ) GeneratedBy,
'ReceivedBy '+ STUFF(( SELECT '; To - ' + EmailAddress AS [text()]
FROM CTE1 b
WHERE
a.RecordID=b.RecordID and a.ID=b.ID and b.Display = 'ReceivedBy'
FOR XML PATH('')
), 1, 2, '' ) ReceivedBy
From CTE1 a
group by RecordID ,ID
select RecordID ,ID,GeneratedBy +CHAR(13)+ ReceivedBy as FullDisplay from CTE2
Thanks
Saravana Kumar C -
How to line break in an SQL Report
I have a simple SQL report with many columns that make the window very wide and the use has to scroll horizontally quite a lot.
How can I make the line break after some column?
Can someone give me a live example for that?Custom report template then is your answer.. Without seeing your initial report it would be hard to give you the code fully. However, if you open the standard report template for your theme, you could save it as a new template and edit it accordingly. You would find the column you wish to break on and create a new <tr> .. </tr> under the <td> definition..
Thank you,
Tony Miller
Webster, TX -
Unwanted Line Breaks in PL/SQL CODE after 'CREATE OR REPLACE' statements
Does anybody know how to keep SQL Developer from automatically editing PL/SQL code and adding line breaks after 'CREATE OR REPLACE' statements?
It keeps taking:
CREATE OR REPLACE PACKAGE DEVELOPER AUTHID DEFINER
And turns it into:
create or replace
package developer AUTHID DEFINER
This unwanted linebreak causes our autodeployment processes to break.
Thanks,
Michael Dunn
University of Notre Dame
Edited by: user9133268 on Feb 21, 2012 8:00 AMHi Michael,
I believe nothing for this issue has progressed since it was asked here:
2.1 RC Extra Line Breaks
As there may be approval for some planned improvements to the SQL Formatter feature in 3.2, I logged an enhancement request for you:
Bug 13744858 - FORUM: UNWANTED LINE BREAK AFTER CREATE OR REPLACE SYNTAX
Regards,
Gary
SQL Developer Team
Edited by: Gary Graham on Feb 21, 2012 4:19 PM
But if you have control over your auto-deployment process code, it might be quicker to enhance that to deal with CREATE OR REPLACE on the same or the preceding line. Also, note that if you edit the package DDL to put the CREATE OR REPLACE on the same line with the package name in the code editor, then immediately use Export or Save Package Spec and Body to save it to disk, then PACKAGE <name> will appear on the same line as the CREATE OR REPLACE syntax. -
Line break in pl/sql block
Here's my code, which indeed, may be cumbersome, but works:
declare
v_id NUMBER;
v_iso VARCHAR2(30);
v_title VARCHAR2(60);
v_approval_req VARCHAR2(10);
v_approved VARCHAR2(10);
v_job_desc VARCHAR2(60);
v_user VARCHAR2(30);
v_get_user VARCHAR2(60) := :P101_USERNAME;
v_get_user2 VARCHAR2(60) := :P101_USERNAME;
v_num_docs NUMBER;
v_num_rejected NUMBER;
v_count NUMBER := 0;
BEGIN
CASE v_get_user
WHEN :P101_USERNAME THEN
SELECT COUNT(*) into v_num_docs
FROM doc_info, sh_job_description, sh_employees
WHERE doc_info.owner = sh_job_description.job_desc
and sh_job_description.job_desc_id = sh_employees.job_desc_id
and UPPER(doc_info.approval_req) = 'YES'
and (doc_info.approved is null
or UPPER(doc_info.approved) = 'NO')
and sh_employees.user_name = :P101_USERNAME
and sh_employees.user_name <> 'SH_LOCAL';
if v_num_docs > 0 then
htp.bold('You have '||v_num_docs||' document(s) to approve. Please click on the Approve Documents button below to do so.');
end if;
END CASE;
CASE v_get_USER2
WHEN :P101_USERNAME THEN
SELECT COUNT(*) into v_num_rejected
FROM doc_info, sh_job_description, sh_employees
WHERE doc_info.owner = sh_job_description.job_desc
and sh_job_description.job_desc_id = sh_employees.job_desc_id
and UPPER(doc_info.approval_req) = 'YES'
and UPPER(doc_info.approved) = 'REJECTED'
and sh_employees.user_name = :P101_USERNAME
and sh_employees.user_name <> 'SH_LOCAL';
if v_num_rejected > 0 then
htp.bold('You have '||v_num_rejected ||' rejected document(s) that have had updates made per your request. Please click on the Approve Documents button below to review the changes, then approve if all changes are accepted.');
end if;
END CASE;
exception when others then null;
END;Here's the output:
You have 4 document(s) to approve. Please click on the Approve Documents button below to do so. *\n*You have 1 rejected document(s) that have had updates made per your request. Please click on the Approve Documents button below to review the changes, then approve if all changes are accepted. I have entered a bold /n where I need a line break. Silly, but I've tried many combos of \n and the break with a br and this < and this > (I can't get the real thing to post), concatenating and not, but haven't come up with it.
Off to lunch now, back in an hour.
TIA!!!!!userRRRYB wrote:
Here's my codeFrom where? APEX version? Region? Process? Example on apex.oracle.com?
Fixed. I split it up into two different items, created a region for each, and placed the regions in position 1.Sounds like a lot of extra work.
I have entered a bold /n where I need a line break. Silly, but I've tried many combos of \n and the break with a br and this < and this > (I can't get the real thing to post), concatenating and not, but haven't come up with it.
How about instead of the \n, trying a chr(10) and possibly adding a chr(13)?
I've tried your exampleand htp.p(chr(13)); and suggestions?The HTML specification instructs user agents to collapse white space characters, so however many spaces, tabs, new lines, or carriage returns you add, using whatever notation, only a single space will actually be displayed.
>
htp.bold('<p>You have '||v_num_docs||' document(s) to approve. Please click on the Approve Documents button below to do so.</p>');
htp.bold('<p>You have '||v_num_rejected ||' rejected document(s) that have had updates made per your request. Please click on the Approve Documents button below to review the changes, then approve if all changes are accepted.</p>');It's also specified that inline elements can't contain block-level elements. <tt>b</tt> (as generated by <tt>htp.bold</tt>) is an inline element, while <tt>p</tt></a> is block-level.
In 2011 don't use any <tt>htf/htp</tt> element methods: the HTML generated by these packages is based on an archaic, unadopted HTML version and produces mark-up that is not valid for the XHTML DOCTYPEs used in APEX 4.0 themes. APEX itself stopped using them years ago.
Not knowing where in the page this information is intended to display, it's always safer to assume there is no open block-level container and provide one (such as <tt>div</tt> or <tt>p</tt>) in the emitted mark-up. Does
htp.p('<p>You have '||v_num_docs||' document(s) to approve. Please click on the Approve Documents button below to do so.</p>');
htp.p('<p>You have '||v_num_rejected ||' rejected document(s) that have had updates made per your request. Please click on the Approve Documents button below to review the changes, then approve if all changes are accepted.</p>');produce the required layout?
exception when others then null;Disaster waiting to happen.
http://tkyte.blogspot.com/2006/08/ouch-that-hurts.html
http://tkyte.blogspot.com/2007/03/dreaded-others-then-null-strikes-again.html
http://tkyte.blogspot.com/2008/01/why-do-people-do-this.html
http://tkyte.blogspot.com/2008/06/when-others-then-null-redux.html -
How to add a new line in SMS(Line Break).
Hi All,
I need to send SMS from PL\SQL Procedure
The problem i have been facing is that the string being passed in as sms content is not parsing a newline character.
It shows all content in one line.
I need to break them in several lines.
Give me a direction how to add a new line in SMS.
Regards,
Raj.Hi,
Sure, Here it is
CREATE OR REPLACE PROCEDURE APPS.AUTO_SMS_RTV_REPORT
IS
sender VARCHAR2(1000);
recipient VARCHAR2(1000);
message VARCHAR2(4000);
sub VARCHAR2(1000) := 'HELLO';
dt1 varchar2(1000) := to_char(sysdate,'DD-MON-YY');
mailhost VARCHAR2(30) := '10.7.7.xxx';
mail_conn UTL_SMTP.CONNECTION;
v_crlf VARCHAR2(2) := CHR(13)||CHR(10);
CURSOR cur_Rejection_Records IS
SELECT DISTINCT
rt.VENDOR_SITE_ID ,
pvs.email_address VENDOR_MAIL_ID ,
pvs.PHONE vendor_contact_no ,
hre.EMAIL_ADDRESS Employee_mail_id ,
hre.FULL_NAME
FROM apps.rcv_transactions rt,
apps.po_vendors pv,
apps.po_vendor_sites_all pvs,
apps.mtl_transaction_reasons mtr,
apps.fnd_user fu,
apps.hr_employees hre
WHERE transaction_type = 'RETURN TO VENDOR'
--AND TRUNC(rt.transaction_date) = TRUNC(SYSDATE)
AND rt.vendor_id = pv.vendor_id
AND rt.vendor_site_id = pvs.vendor_site_id
AND rt.REASON_ID = mtr.REASON_ID(+)
AND fu.user_id = rt.last_updated_by
AND hre.EMPLOYEE_ID = fu.EMPLOYEE_ID
AND TRANSACTION_ID IN (
11902189,
11902253,
11902148)
BEGIN
FOR rec_Rejection_Records IN cur_Rejection_Records
LOOP
Begin
sender := '<[email protected]>';
recipient := rec_Rejection_Records.vendor_contact_no || '@aaaa.com';
mail_conn := utl_smtp.open_connection(mailhost, 8025);
utl_smtp.helo(mail_conn, mailhost);
utl_smtp.mail(mail_conn, sender);
utl_smtp.rcpt(mail_conn, recipient);
utl_smtp.DATA( mail_conn,
'Date: ' || TO_CHAR(SYSDATE, 'Dy, DD Mon YYYY hh24:mi:ss') || utl_tcp.crlf ||
'From: ' || sender || utl_tcp.crlf ||
'Subject: '|| sub || utl_tcp.crlf ||
'To: ' || recipient || utl_tcp.crlf ||
utl_tcp.crlf ||
'Dear Supplier,'||CHR(10)|| utl_tcp.crlf ||'\\\0x0A'|| -- HERE I NEED LINE BREAK
'Please.'|| utl_tcp.crlf
DBMS_OUTPUT.PUT_LINE('Yep !!! SMS Sent Sucessfully :) ');
utl_smtp.quit(mail_conn);
EXCEPTION
WHEN UTL_SMTP.PERMANENT_ERROR THEN
dbms_output.put_line('Error - ' || SQLCODE || ' - ' || SQLERRM);
WHEN OTHERS THEN
dbms_output.put_line('Error - ' || SQLCODE || ' - ' || SQLERRM);
END;
END LOOP;
END AUTO_SMS_RTV_REPORT;
/ -
How to handle line break embeded inside CSV column
Hi there,
I am under the pressure to make it work. I already put this question on APEX forum, but on second thought, I think it relates more to PL/SQL rather than APEX since APEX 4.1 already have utility to handle CSV Upload.
If you read it already in APEX forum, please ignore.
I am sorry for that. Thanks for reading.
I need to develop an app that allows user to upload CSV file to a interface table.
The APEX version at my workplace is 4.0.2.
I used the code from
http://dbswh.webhop.net/htmldb/f?p=BLOG:READ:0::::ARTICLE:11000346061523
It all works well till recently I find out
If a column in a CSV file cotain a line break (or new line) e.g. (The tester copy and paste this text which has line break into a column in a spreadsheet)
This is the first sentence.
This is the second sentence.
It will break the “This is the second sentence”. To a new column.
The contents of the CSV viewed in Notepad look as below
Assessment Date,Scheduled Date,Assessment Provider,Assessor Name,Court,First Name,Middle Name,Last Name,PRN Person Record Number,NHI Number,Defendant Attended Y/N,Is Dependent Y/N,Notes,Primary Ethnicity,"Ethnicity Other, please specify",Gender,Currently in Treatment Y/N,Substance of Concern 5,Other Substance Specified
22/09/2012,,Provider Co Name,Warren Edgley,Wellington,,,Salty,2545554,dgsdf,ergerg,,"This is the first sentence.
This is the second sentence.",Japanese,,Female,b,,
Here is the code from the CSV UTIL, please help me to find out how can I replace the line break to a space so that the uploading process is correct.
CREATE OR REPLACE PACKAGE BODY "CSV_UTIL"
AS
--strip the beginning and the end quotes, then replace double quotation with single
FUNCTION de_quote (p_str IN VARCHAR2, p_enc_by IN VARCHAR2)
RETURN VARCHAR2
IS
v_str VARCHAR2(32767) := p_str;
BEGIN
IF (p_enc_by IS NULL)
THEN
RETURN p_str;
ELSE
IF SUBSTR(p_str,-1) = p_enc_by THEN
v_str := SUBSTR(p_str,1,LENGTH(p_str)-1);
END IF;
IF SUBSTR(p_str,1,1) = p_enc_by THEN
v_str := SUBSTR(v_str,2);
END IF;
RETURN REPLACE (v_str,
p_enc_by || p_enc_by,
p_enc_by
END IF;
END de_quote;
PROCEDURE parse (p_str IN VARCHAR2, p_enc_by IN VARCHAR2, p_sep IN VARCHAR2)
IS
l_n NUMBER DEFAULT 1;
l_in_quote BOOLEAN DEFAULT FALSE;
l_ch NCHAR (1);
l_len NUMBER DEFAULT NVL (LENGTH (p_str), 0);
BEGIN
IF (l_len = 0)
THEN
RETURN;
END IF;
g_words := g_empty;
g_words (1) := NULL;
FOR i IN 1 .. l_len
LOOP
l_ch := SUBSTR (p_str, i, 1);
IF (l_ch = p_enc_by)
THEN
l_in_quote := NOT l_in_quote;
END IF;
IF (l_ch = p_sep AND NOT l_in_quote)
THEN
l_n := l_n + 1;
g_words (l_n) := NULL;
ELSE
g_words (l_n) := g_words (l_n) || l_ch;
END IF;
END LOOP;
g_words (l_n) := de_quote (g_words (l_n), CHR(10));
g_words (l_n) := de_quote (g_words (l_n), CHR(13));
FOR i IN 1 .. l_n
LOOP
g_words (i) := de_quote (g_words (i), p_enc_by);
END LOOP;
END parse;
Author: Oleg Lihvoinen
Company: DbSWH
Changes:
10.02.2011, There was a miscalculation of the file line last position in case it is the end of file
PROCEDURE upload (p_file_name VARCHAR2, p_collection_name VARCHAR2, p_enc_by IN VARCHAR2, p_sep_by IN VARCHAR2, p_rows NUMBER)
IS
v_blob_data BLOB;
v_clob_data CLOB;
v_clob_len NUMBER;
v_position NUMBER;
v_char NCHAR (1);
c_chunk_len NUMBER := 1;
v_line VARCHAR2 (32767) := NULL;
v_data_array vcarray;
v_rows NUMBER := 0;
n_seq NUMBER := 1;
dest_offset NUMBER := 1;
src_offset NUMBER := 1;
amount INTEGER := DBMS_LOB.lobmaxsize;
blob_csid NUMBER := DBMS_LOB.default_csid;
lang_ctx INTEGER := DBMS_LOB.default_lang_ctx;
warning INTEGER;
l_sep VARCHAR2(100) := CASE WHEN p_sep_by = '\t' THEN chr(9) ELSE p_sep_by END;
BEGIN
htmldb_collection.create_or_truncate_collection
(p_collection_name => p_collection_name);
-- Read blob from wwv_flow_files
SELECT blob_content
INTO v_blob_data
FROM wwv_flow_files
WHERE NAME = p_file_name;
v_position := 1;
DBMS_LOB.createtemporary (lob_loc => v_clob_data,
CACHE => TRUE,
dur => DBMS_LOB.SESSION
DBMS_LOB.converttoclob (v_clob_data,
v_blob_data,
amount,
dest_offset,
src_offset,
blob_csid,
lang_ctx,
warning
v_clob_len := DBMS_LOB.getlength (v_clob_data);
IF v_clob_len = 0 THEN
RETURN;
END IF;
WHILE (v_position <= v_clob_len + 1)
LOOP
v_char := DBMS_LOB.SUBSTR (v_clob_data, c_chunk_len, v_position);
v_line := v_line || v_char;
v_position := v_position + c_chunk_len;
-- When the whole line is retrieved and not end of file or end of file
IF v_char = CHR (10) AND v_position < v_clob_len OR v_position = v_clob_len + 1
THEN
parse (p_str => v_line, p_enc_by => p_enc_by, p_sep => l_sep);
v_data_array := g_words;
FOR i IN 1..g_words.count LOOP
IF i <= 50 THEN
v_data_array(i) := g_words(i);
ELSE
exit;
END IF;
END LOOP;
FOR i IN g_words.count + 1..50 LOOP
v_data_array(i) := null;
END LOOP;
v_rows := v_rows + 1;
-- exit if uploaded specified number of rows
IF p_rows IS NOT NULL AND v_rows > p_rows THEN
EXIT;
END IF;
-- Store data to collection
n_seq :=
htmldb_collection.add_member
(p_collection_name => p_collection_name,
p_c001 => v_data_array
(1),
p_c002 => v_data_array
(2),
p_c003 => v_data_array
(3),
p_c004 => v_data_array
(4),
p_c005 => v_data_array
(5),
p_c006 => v_data_array
(6),
p_c007 => v_data_array
(7),
p_c008 => v_data_array
(8),
p_c009 => v_data_array
(9),
p_c010 => v_data_array
(10),
p_c011 => v_data_array
(11),
p_c012 => v_data_array
(12),
p_c013 => v_data_array
(13),
p_c014 => v_data_array
(14),
p_c015 => v_data_array
(15),
p_c016 => v_data_array
(16),
p_c017 => v_data_array
(17),
p_c018 => v_data_array
(18),
p_c019 => v_data_array
(19),
p_c020 => v_data_array
(20),
p_c021 => v_data_array
(21),
p_c022 => v_data_array
(22),
p_c023 => v_data_array
(23),
p_c024 => v_data_array
(24),
p_c025 => v_data_array
(25),
p_c026 => v_data_array
(26),
p_c027 => v_data_array
(27),
p_c028 => v_data_array
(28),
p_c029 => v_data_array
(29),
p_c030 => v_data_array
(30),
p_c031 => v_data_array
(31),
p_c032 => v_data_array
(32),
p_c033 => v_data_array
(33),
p_c034 => v_data_array
(34),
p_c035 => v_data_array
(35),
p_c036 => v_data_array
(36),
p_c037 => v_data_array
(37),
p_c038 => v_data_array
(38),
p_c039 => v_data_array
(39),
p_c040 => v_data_array
(40),
p_c041 => v_data_array
(41),
p_c042 => v_data_array
(42),
p_c043 => v_data_array
(43),
p_c044 => v_data_array
(44),
p_c045 => v_data_array
(45),
p_c046 => v_data_array
(46),
p_c047 => v_data_array
(47),
p_c048 => v_data_array
(48),
p_c049 => v_data_array
(49),
p_c050 => v_data_array
(50)
-- Clear the line
v_line := NULL;
END IF;
END LOOP;
END;
END;In my apps, I save these straight into a table rather than an APEX collection because the number of columns can be longer than 50.
I want to find out how can replace these line break inside a column to a space.
If any one has any ideas, please let me know.
Thanks a lot in advance.
AnnAnn586341 wrote:
I think the code split the whole thing by this line
-- When the whole line is retrieved and not end of file or end of file
IF v_char = CHR (10) AND v_position < v_clob_len OR v_position = v_clob_len + 1
THEN
Yes, exactly. That piece of code believes all CHR(10) occurences are record delimiters.
It is not smart enough to recognize that a CHR(10) within quotation marks are part of the data.
Optimally a solution should keep the CHR(10) rather than replacing with spaces, but that will be a bigger rewrite of the UTL_CSV code ;-)
If you are happy with replacing with spaces, a "simple" solution could be something like:
Declare a boolean variable in upload procedure:
v_within_text_column boolean := false;And use it like this:
WHILE (v_position <= v_clob_len + 1)
LOOP
v_char := DBMS_LOB.SUBSTR (v_clob_data, c_chunk_len, v_position);
IF v_char = '"' THEN
v_within_text_column := NOT v_within_text_column;
ELSIF v_char = CHR(10) AND v_within_text_column THEN
v_char := ' ';
END IF;
v_line := v_line || v_char;
v_position := v_position + c_chunk_len;
-- When the whole line is retrieved and not end of file or end of file
IF v_char = CHR (10) AND v_position < v_clob_len OR v_position = v_clob_len + 1
THEN
v_within_text_column := false; -- To be safe always set this on "true" linebreaks
{code}
+(This is untested code just written here in the text editor.)+
It should work by toggling a flag whether you are "within" the quotes or not and then replacing CHR(10) with a space if you are within a text column.
This way we avoid having to go through the clob more than once (it is enough that this code walks the clob one character at a time...)
It will not handle if the clob contains situations like:
{code}
abc,123,"This is a text with a quote from a man who said \"To Be,
or Not To Be\" some hundred years ago",123,xyz
{code}
Escaped quotes would need separate attention ;-) -
Line break/carriage return in formula
Hi, I have an IF ELSEIF formula that works fine. Problem is they now wants the result to show a few paragraph instead of a few words. Can someone help me figure out how to insert line breaks/carriage returns in a formula. Thanks.
This is what I have:
If (CurrentDate> {@21Days}) OR (CurrentDate >{@LastMonth})THEN "NOTICE OF TERMINATION OF CHILD CARE CONTRACT FOR NON-PAYMENT OF FEES. + chr(10)+ Lets see how to make a paragraph"
ELSE
If (CurrentDate<{@LastMonth}) THEN "SECOND WEEK NON-PAYMENT/PARTIAL PAYMENT NOTICE"
ELSE
If {tblAROpenDoc.dtmDocDate} in LastFullWeek THEN "FIRST WEEK NON-PAYMENT/PARTIAL PAYMENT NOTICE" ELSE ""
the chr(10) shows
Any ideas? -
Hi Everyone:
How do i send break signal in Terminal 2.0.2?
H/W Specs: Late Macbook 2007
s/w: 10.5.8
All the console applications have a command like this. Does Terminal also has one. i did some research and found it used to be on earlier ones.Break is a serial comm line feature that causes the TxD line to go "Low" for a specific period of time. Terminal does not do serial comm lines, so what are you sending a break signal to?
If you do need to talk with a serial port, you can run the 'screen' command (see "man screen"). There is a 'break' command as part of the 'screen' environment. -
Acrobat v9 JavaScript Alert Box - any way to add space or line break after each array item?
I have a Document level Javascript used to identify blank required fields and is triggered on document actions, Print and Save. The script identifies the blank required fields, counts them, and outputs to an Alert box indicating the number of required fields blank and lists the fields by tooltip name. The script identifies the required fields by an asterisk at the end of each tool tip.
My question is there any way to add a space or a line break after the comma for each listed item?
Here is an image of the output where the listed items are all run together.
Here is the code:
function validateFields()
//a counter for the number of empty fields
var flg = 0
// count all the form fields
var n = this.numFields
//create an array to contain the names of required fields
//if they are determined to be empty
var fArr = new Array();
//loop through all fields and check for those that are required
// all fields that have a '*' in their tool tip are required
for(var i = 0;i<n;i++){
var fn = this.getNthFieldName(i);
var f = this.getField(fn);
//tool tip is the fields\'s 'userName' property;
var tt = f.userName
//test for the '*';
if(tt.indexOf('*')!=-1 && f.value == f.defaultValue){
//increment the counter of empty fields;
flg++;
//add the fields userName (tool tip) to the list of empty field names;
fArr[fArr.length] = tt;
//now display a message if there are empty fields
if(flg>0){
app.alert('There are '+flg+' fields that require a value\n\n'+ fArr,3)
else{
this.print();Thank you! The alert box array items now have a line break, image below. You know you have made my day and possibly several weeks as now I have more understanding about how to apply everything I have been reading in the Acrobat JavaScript guide and of course as soon as you pointed out using a "join", that triggered some old-days of working with Access and SQL queries.
I will work on the required attribute to see how I might reference it. I am laughing at myself now - good luck to me in figuring it out as I was very stick-in-the-mud regarding the line break issue.
Thanks again and here is the result of the updated code: -
[solved] How to have line breaks in output of journalctl log
Hello,
How can I have line breaks in the journalctl log output?
At the moment I cannot read most of the log output because it does not fit into my terminal.
See this screenshot: http://i.imgur.com/nUR6Fae.png
Thanks!
Last edited by orschiro (2013-09-20 08:08:04)You can run
journalctl -b --no-pager | less
Edit: If you hit 'h' you get help screen
SUMMARY OF LESS COMMANDS
<snip>
ESC-) RightArrow * Left one half screen width (or N positions).
ESC-( LeftArrow * Right one half screen width (or N positions).
<snip>
It may be possible to configure the way the journal uses the pager so it wraps the lines by default.
Edit 2: Or maybe it can't be configured.
man journalctl wrote:The output is paged through less by default, and long lines are "truncated" to screen width. The hidden part can be viewed by using the left-arrow and right-arrow keys. Paging can be disabled, see --no-pager and section Environment below.
Last edited by karol (2013-09-20 08:02:13) -
How to extract compiled stored procedure without line break for long statement
After I compiled stored procedure which contains long statement, the statement would cut into 2 rows into dba_source.
However, when I extract the codes from dba_source table, the source couldn't be compiled successfully because of
the broken lines.
For example, the following statement would be broken into 2 rows like this:
(line 1) gv_Message := 'Interface Description: Interface with Training '|| 'and Development Intran
(line 2) et (Evaluation Statistic Details)';That's very strange. What did you originally compile it with (sql*plus, toad, etc...)? I was able to compile a procedure with the maximum line length (2499 characters see error SP2-0027) and there is no split. Is the procedure in a VALID state with that line break? Honestly, this seems very odd, possibly even a bug here somewhere.
Richard -
How to detect line break while reading input ?
Hi all,
I am reading the user input from standard input.
I want to detect the line break. So that I can stop reading input and proceed processing the string.
Actually I am getting the SQL query as input and after that I am executing the same by passing it to a function.
Pl. do reply me.
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext())
temp=scanner.next();
sql=sql.concat(" "+temp);
if(scanner.next=="\n")
break;
System.out.println(sql);
sqlTool.executeSQL(sql);
The above is not working properly.But if new line comes, what will be it's value?Empty lines are discarded by the scanner.
Kaj
Maybe you are looking for
-
Itunes 10.6.1 update
I have tried over 10 times, but there is always an error while trying to update to version 10.6.1, whether I do it automatically or manually. I have an HP, not a mac. What can I do?
-
Hello World I have been tinkering with mine SDD-HDD setup with Bcache. And i was wondering if i did it right ??? Mine Idea was to have a 90GB SDD for quick root access. And use the rest of the SSD with Bcache to speedup files from the HDD. Any advice
-
hi, i have a piece of code like the one below. please help be in optimizing it better. open vcursor for select *..........where..... loop fetch vcursor into .......a,b,c. var a = fn(a,b,c) 'place a in an array.. end loop.. is there a way to fetch eve
-
.swf works differently on different servers
I made a flash navigation 2 years ago that works fine (http://fwp.mt.gov/education/ecosystem/home.html - it's the bar with Discover, Explore, Conserve, Learn and Resources, with images on the right of a compass, bear, antelope, toad, and sage grouse)
-
Failure during database recovery on Homogeneous System Copy
Dear all, i am trying to do system copy, and it fails after the execution step: database recovery MaxDB: 7.6.5.15 SAP Netweaver 7 Ehp 1 apparantly this is something to do with LOAD_SYSTAB. I could run load_systab [-u <sysdba_user>,<sysdba_user_passw