Function(){return A.apply(null,[this],concat($A(arguments)))}
The message in the title keeps popping up and disappearing where the cursor is or was or randomly when reading threads on this forum. What is this annoyance and how do I get rid of it?
Using Windows XP.
Try Google Chrome. Not sure if it works on XP but pretty sure it does.
This was discussed in the forums comments area. This has been seen before. Not positive if there was a fix.
Similar Messages
-
Oracle XML functions return tags for null columns.
I am currently writing a SOAP Message base on a SQL statement formatted as XML. However, I am having problems with Oracle XML functions not returning tags for null columns as seen in my example below. Is the a way to get Oracle XML functions to return empty tags for null column?
CREATE TABLE FOREXAMPLE_TABLE (COLUMN_1 VARCHAR2 (4000),
COLUMN_2 VARCHAR2 (4000),
COLUMN_3 VARCHAR2 (4000));
INSERT INTO FOREXAMPLE_TABLE (COLUMN_2)
VALUES ('This column is not null');
COMMIT;
SELECT XMLELEMENT ( "soap:Envelope",
XMLATTRIBUTES ( 'http://schemas.xmlsoap.org/soap/envelope/' AS "xmlns:soap"),
XMLELEMENT ( "soap:Body",
XMLATTRIBUTES ( 'http://Custom_Column/types/' AS "xmlns:ns1"),
XMLELEMENT ( "ns1:New_Instance",
XMLELEMENT ( "ns1:Input_XMLDoc",
XMLFOREST(fe.COLUMN_1 as "Column_1",
fe.COLUMN_2 as "Column_2",
fe.COLUMN_3 as "Column_3"))))) as xml
FROM FOREXAMPLE_TABLE fe
The results returned from the select statement.
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body xmlns:ns1="http://Custom_Column/types/"><ns1:New_Instance>
<ns1:Input_XMLDoc><Column_2>This column is not null</Column_2>
</ns1:Input_XMLDoc></ns1:New_Instance></soap:Body></soap:Envelope>
The desired results for the select statement.
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body xmlns:ns1="http://Custom_Column/types/"><ns1:New_Instance>
<ns1:Input_XMLDoc><Column_1></Column_1>
<Column_2>This column is not null</Column_2><Column_3></Column_3>
</ns1:Input_XMLDoc></ns1:New_Instance></soap:Body></soap:Envelope>
jeemanAn alternative may be be to use xmlconcat instead of xmlforest:
Time Start: 30.06.2007 18:52:41
PL/SQL procedure successfully completed.
michaels> select xmlelement
("soap:Envelope",
xmlattributes
('http://schemas.xmlsoap.org/soap/envelope/' as "xmlns:soap"),
xmlelement
("soap:Body",
xmlattributes ('http://Custom_Column/types/' as "xmlns:ns1"),
xmlelement ("ns1:New_Instance",
xmlelement ("ns1:Input_XMLDoc",
xmlconcat (xmlelement("Column_1", fe.column_1),
xmlelement("Column_2", fe.column_2),
xmlelement("Column_3", fe.column_3)
).extract('.').getstringval() as xml
from (select null column_1, 'This column is not null' column_2,
null column_3
from dual) fe
XML
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body xmlns:ns1="http://Custom_Column/types/">
<ns1:New_Instance>
<ns1:Input_XMLDoc>
<Column_1/>
<Column_2>This column is not null</Column_2>
<Column_3/>
</ns1:Input_XMLDoc>
</ns1:New_Instance>
</soap:Body>
</soap:Envelope> -
Using 'Function Returning SQL Query' with Flash charts
I have created a pl/sql function that returns a SQL query as a varchar2 of this form:
select null link
<x value> value
<Series1 y value> Series 1 Label
<Series2 y value> Series 2 Label
<Series3 y value> Series 3 Label
from tablea a
join tableb b
on a.col = b.col
order by <x value>
If I now call the function from a Flash Chart Series SQL box with the Query Source Type set to 'Function Returning SQL Query' like this:
return functionname(to_date('30-sep-2010', 'dd-mon-yyyy'))
it parses correctly and the page is saved; however, when I run the page I don't get any output - nor any error messages or other indication of a problem.
Now, if I call the function in a SQL client, capture the SQL query output using dbms_output and paste that into the Flash Chart Series SQL box - changing the Query Source Type to SQL Query - and save the page it works fine when I run it and returns a multi-series flash chart.
Can anyone suggest either;
1. What have I might have missed or done wrong?
2. Any way to usefully diagnose the problem...
I have tried using the Apex debugger - which is very nice, by the way - but it doesn't provide any info on what my problem might be. I even tried writing my own debug messages from my function using the apex_debug_message package - got nothing...
Thanks,
EricHi Eric,
Try expressing the source as this:
begin
return functionname(to_date('30-sep-2010', 'dd-mon-yyyy'));
end;That works fine for me, and if I take out the begin-end and the trailing semicolon from the return statement I get the same behavior as you.
It does mention in the help for the source (only during the wizard though) that this source type has to be expressed that way, but I agree it would be helpful if the tool would validate for this format when 'Function Returning SQL Query' is used or give some sort of indication of the trouble. Anyway, this should get you going again.
Hope this helps,
John
If you find this information useful, please remember to mark the post "helpful" or "correct" so that others may benefit as well. -
Page Validation - Function Returning Boolean - Check for NULL
I have 3 Page Validations which all fire on "When Button Pressed" = "Submit".
<br><br>
Number 1 is of type "Item specified is NOT NULL" for "P199_BUSINESS_UNIT1".
<br>
Number 2 is of type "Item specified is NOT NULL" for "P199_BUSINESS_UNIT2".
<br>
Number 3 is of type "Function Returning Boolean" and has the following code:
<br><br>
IF :P199_BUSINESS_UNIT1 IS NULL AND
:P199_BUSINESS_UNIT2 IS NULL THEN
RETURN FALSE ;
ELSE
RETURN TRUE ;
END IF ;<br>
When P199_BUSINESS_UNIT1 is NULL and P199_BUSINESS_UNIT2 is NOT NULL, I get the Error from Validation 1. Perfect.
<br>
When P199_BUSINESS_UNIT1 is NOT NULL and P199_BUSINESS_UNIT2 is NULL, I get the Error from Validation 2. Perfect.
<br>
When P199_BUSINESS_UNIT1 is NOT NULL and P199_BUSINESS_UNIT2 is NOT NULL, I don't get an Error Message. Perfect.
<br><br>
When P199_BUSINESS_UNIT1 is NULL and P199_BUSINESS_UNIT2 is NULL, I get Error Message 1 & 2, <strong>but nothing from 3.</strong>
<br><br>
If I change the code to:
<br><br>
IF :P199_BUSINESS_UNIT1 = '01' AND
:P199_BUSINESS_UNIT2 = '01' THEN
RETURN FALSE ;
ELSE
RETURN TRUE ;
END IF ;<br>
and change both values to '01', I get the appropriate Error Message.
<br><br>
What is going on? Is there some reason I can't check for NULL in a Function Returning Boolean?Scott,
<br><br>
Instead of adding the Validations, I changed my code from:
<br><br>
IF :P199_BUSINESS_UNIT1 IS NULL AND
:P199_BUSINESS_UNIT2 IS NULL THEN
RETURN FALSE ;
ELSE
RETURN TRUE ;
END IF ;
<br>to the following and got the desired results:
<br><br>
IF REPLACE(:P199_BUSINESS_UNIT1,<strong>'%null'</strong> || '%',NULL) IS NULL AND
REPLACE(:P199_BUSINESS_UNIT2,<strong>'%null'</strong> || '%',NULL) IS NULL THEN
RETURN FALSE ;
ELSE
RETURN TRUE ;
END IF ;<br>
Note that I changed the word REPLACE to upper case and the second occurrence of the word NULL to upper case to accentuate the fact that the '%null' is case sensitive, using "%NULL' does not work, it has to be "%null' in lower case.
<br><br>
<strong>Thanks for your help.</strong> -
My iPhone 4s no longer displays photos or text in horizontal mode. Is there a reset option or a known way to have this functionality return?
RRGarcia wrote:
My iPhone 4s no longer displays photos or text in horizontal mode. ...
It could be this... Orientation Lock
Settings > General > Lock Rotation..
Or...
Double-press the home button...
Swipe to the right until you get to the Portrait Orientation Button... -
Min aggregate function returns empty string
I have a data set with a column named "month" which contains string values like 1,2,3... etc. including empty string. When I apply an aggregate Min function like below, it returns empty string instead of 1. or the lowest month number.
Min(Fields!month.Value, "Financial")
Please if any one can assist me on this.
RegardsHi ABDUL-HAFEEZ,
As you know the Min() function returns the minimum value of all non-null numeric values specified by the expression, because you have null string in the field and also the field type is string but not numeric, so this function will not works fine.
I have tested on my local environment that we can get the first convert the string to numeric type value and then get the min value of the month field by using the query not the expression.
Details information below for your reference:
Create an new dataset(DataSet2) to get the minimum value from the Month and the query like below:
SELECT Min(CAST(Month AS INT)) as NewMonth
FROM TableName
Using below expression in the main dataset will display the minimum value of the month:
=Sum(Fields!NewMonth.Value, "DataSet2")
If you still have any problem, please feel free to ask.
Regards
Vicky Liu
If you have any feedback on our support, please click
here.
Vicky Liu
TechNet Community Support -
Report- Pl/sql function returning sql query parsing page items as text?
Hi Team,
I am facing a strange issue .
I have four page items namely
1)JOB_CODE
2)MIN_EXP
3) MAX_EXP
4) SOURCES1
I have a report of the type "Pl/sql function returning sql query"
declare
v_sql varchar2(4000);
begin
if (:JOB_CODE IS NOT NULL and :MIN_EXP IS NOT NULL and :MAX_EXP IS NOT NULL and :SOURCES1 IS NOT NULL) then
v_sql:= 'select v_candidate_id, v_fname,v_current_employer,v_Experience_years from candidature where V_REQUIREMENT = :JOB_CODE and v_experience_years >= :MIN_EXP and v_experience_years <= :MAX_EXP and source like ' || '''' || '%'|| ':SOURCES1' || '%' || '''';
elsif (:JOB_CODE IS NULL and :MIN_EXP IS NOT NULL and :MAX_EXP IS NOT NULL and :SOURCES1 IS NOT NULL) then
v_sql := 'select v_candidate_id, v_fname,v_current_employer,v_Experience_years from candidature where v_experience_years >= :MIN_EXP and v_experience_years <= :MAX_EXP and source like ' || '''' || '%'|| ':SOURCES1' || '%' || '''';
elsif (:MIN_EXP IS NULL and :JOB_CODE IS NOT NULL and :MAX_EXP IS NOT NULL and :SOURCES1 IS NOT NULL) then
v_sql := 'select v_candidate_id, v_fname,v_current_employer,v_Experience_years from candidature where v_experience_years <= :MAX_EXP and V_REQUIREMENT = :JOB_CODE and source like ' || '''' || '%'|| ':SOURCES1' || '%' || '''';
elsif (:MAX_EXP is null and :JOB_CODE IS NOT NULL and :MIN_EXP IS NOT NULL and :SOURCES1 IS NOT NULL) then
v_sql := 'select v_candidate_id, v_fname,v_current_employer,v_Experience_years from candidature where V_REQUIREMENT = :JOB_CODE and v_experience_years >= :MIN_EXP and source like ' || '''' || '%'|| ':SOURCES1' || '%' || '''';
end if;
insert into query_list values (v_sql);
insert into debug values (:JOB_CODE , :MIN_EXP , :MAX_EXP , :SOURCES1);
return v_sql;
end;
Please not that I am insertin the query into a table called Query_list and the page item values into the table called Debug thru the pl/sql function which returns teh query.
Now I select the data from the debug tables.
select unique(query) from query_list;
select v_candidate_id, v_fname,v_current_employer,v_Experience_years from candidature where V_REQUIREMENT = :JOB_CODE and v_experience_years >= :MIN_EXP and v_experience_years <= :MAX_EXP and source like '%:SOURCES1%'
select * from debug;
JOBCODE MINEX MAXEX SOURCE
21 1 10 donkeyHire
And if I run the query in sql I get some records returned
select v_candidate_id, v_fname,v_current_employer,v_Experience_years from candidature where V_REQUIREMENT = 21 and v_experience_years >= 1 and v_experience_years <= and source like 'donkeyHire'
V_CANDIDATE_ID V_FNAME V_CURRENT_EMPLOYER V_EXPERIENCE_YEARS
2 Vengu Andale Tech 4
But the record does not show up in the report!
does this type of report parse page items as text?
Why is it so?
Waiting for an early reply.
Thanks,
venkatVenkat - You don't want to put ':SOURCES1' in quotes like that.
Scott -
Function returning error text validation
Hi,
I have a page where i can insert/update user, organisation, responsible.
Organisation can be nullable.
Only one user at a time can be responsible for a organisation.
To check this responsible validation i made a function returning error text validation as follow:
BEGIN
FOR c IN (SELECT usr_spa
FROM kpi_users
WHERE usr_org_id = :p22_usr_org_id
LOOP
IF upper(:p22_usr_spa) = upper('YES') and upper(c.usr_spa) = upper('YES')
THEN
RETURN 'A user is already responsible for this organisation'||'!';
END IF;
END LOOP;
END;
The validation works fine.
But it goes wrong when i want to insert a new user, without assigning him to an organisation.
I get following message:
ORA-01722: invalid number
ERR-1024 Unable to run "function body returning text" validation.
Can someone please help me solve this problem?
ThanksHi,
try:
BEGIN
FOR c IN (SELECT usr_spa
FROM kpi_users
WHERE usr_org_id = nvl(:p22_usr_org_id,-1)
LOOP
IF upper(:p22_usr_spa) = upper('YES') and upper(c.usr_spa) = upper('YES')
THEN
RETURN 'A user is already responsible for this organisation'||'!';
END IF;
END LOOP;
END;This assumes that :p22_usr_org_id could be null and converts this to -1 (pick another default value if this may exist as an id). It is possible that the statement would otherwise be seen as WHERE usr_org_id = null which is invalid.
or you could do:
BEGIN
IF :p22_usr_org_id IS NOT NULL THEN
FOR c IN (SELECT usr_spa
FROM kpi_users
WHERE usr_org_id = :p22_usr_org_id
LOOP
IF upper(:p22_usr_spa) = upper('YES') and upper(c.usr_spa) = upper('YES')
THEN
RETURN 'A user is already responsible for this organisation'||'!';
END IF;
END LOOP;
END IF;
END;As this would stop the validation running if the :p22_usr_org_id is null.
Or, you could just make your validation conditional on p22_usr_org_id not being null?
Andy -
Function returning error - change notification
I have a function returning error text. When error occurs I get the message
'xx error has occurred' on the screen (in notification). Is there a way to control the message text so I can display different text?It's something like this:
DECLARE l_code zip.code%TYPE;
got_error varchar2(1) := 'N';
l_check_fld varchar2(30000);
l_error_fld varchar2(32000);
vErrorFields varchar2(1000);
CURSOR check_zip IS
select ''
from zip
where code = l_code;
BEGIN
apex_collection.create_or_truncate_collection('ZIP');
FOR i IN 1 .. apex_application.g_f03.COUNT LOOP
vErrorFields := '';
/* Code MUST be entered */
if (apex_application.g_f03(i) is null and
(apex_application.g_f04(i) is not null or
apex_application.g_f05(i) is not null))then
got_error := 'Y';
vErrorFields := vErrorFields || ',f03';
l_error_fld := l_error_fld || 'Row ' || to_char(i) || ':' ||' <span style="color: red">Code cannot be <strong>blank.</strong></span><br>';
end if;
END LOOP;
if got_error = 'N' then
apex_collection.delete_collection('ZIP');
end if;
RETURN l_error_fld;
END; -
Function - Return More than One Value in a Concatenated String
Hi,
Is it possible for a function to return a concatenated string(combining more than one number). I am trying to return the PO number by inputting and invoice_id and code number but an invoice_id can have more than one PO with the same code number. I would like to concatenate the PO numbers with commas e.g.
10124, 10090, 10987
At the moment the function returns null for these cases that have more than one PO number.
ThanksAlso is is possible to create another function that can be called in the same script using the PO number as an IN parameter in SQL. See SQL below:
select cck.concatenated_segments as "Segment" ,
cc.code_combination_id,
NVL ( src . user_je_source_name , '**********' ) AS "Source" ,
NVL ( cat . user_je_category_name , '**********' ) AS "Category" ,
jel . period_name as "Period Name" ,
i.invoice_id as "Invoice ID",
s.vendor_name as "Vendor Name",
s.segment1 as "Supplier No",
jeb . name as "Batch Name" ,
func_get_po(i.invoice_id, cc.code_combination_id) "PO No",
jeh . name AS "Header Name" ,
jel . description AS "Description" ,
jel.accounted_dr AS "Debit" ,
jel.accounted_cr AS "Credit" ,
NVL(jel.accounted_dr, 0) - NVL(jel.accounted_cr, 0) AS "Net Amount"
FROM apps.gl_code_combinations cc ,
apps.gl_code_combinations_kfv cck,
apps.gl_je_lines jel ,
apps.gl_je_headers jeh ,
apps.gl_je_batches jeb ,
apps.gl_je_categories cat ,
apps.gl_je_sources src,
apps.gl_import_references r,
apps.xla_ae_lines al,
apps.xla_ae_headers ah,
apps.xla_events e,
xla.xla_transaction_entities te,
apps.ap_invoices_all i,
apps.ap_suppliers s
WHERE ( cck.concatenated_segments BETWEEN '23.83545.141.000.00.23.000.000' AND '23.83545.141.000.00.23.000.000'
AND cc.CHART_OF_ACCOUNTS_ID = 50328
AND jeh.LEDGER_ID IN
(select acc.ledger_id
FROM apps.gl_access_set_ledgers acc
WHERE acc.access_set_id = 1000
AND jel.code_combination_id = cc.code_combination_id
AND cck.code_combination_id = cc.code_combination_id
AND jel.status
|| '' = 'P'
AND ( jel.accounted_dr != 0
OR jel.accounted_cr != 0 )
AND jeh.je_header_id = jel.je_header_id
AND jeh.actual_flag = 'A'
AND 1 = 1
AND jeh.currency_code != 'STAT'
AND jeb.je_batch_id = jeh.je_batch_id
AND jeb.average_journal_flag = 'N'
and src.je_source_name = jeh.je_source
and cat.je_category_name = jeh.je_category
and r.je_header_id(+) = jel.je_header_id
and r.je_line_num(+) = jel.je_line_num)
AND ( :period_name = jel.period_name
and al.gl_sl_link_id(+) = r.gl_sl_link_id
and al.ae_header_id = ah.ae_header_id(+)
and al.application_id = ah.application_id(+)
and ah.application_id = e.application_id(+)
and ah.event_id = e.event_id(+)
and e.application_id = te.application_id(+)
and e.entity_id = te.entity_id(+)
and nvl(te.source_id_int_1,-99) = i.invoice_id(+)
and i.vendor_id = s.vendor_id(+) )
AND ( jel.ledger_id = 2041)
ORDER BY src.user_je_source_name ,
cat.user_je_category_name ,
jeb.name ,
jeh.name ,
cck.concatenated_segments ,
jel.je_line_num
I am using func_get_po(i.invoice_id, cc.code_combination_id), I would like to call another function in this script that uses the PO number as an IN parameter.
For example func_get_po_requester(i.invoice_id, cc.code_combination_id, func_get_po(i.invoice_id, cc.code_combination_id))
Would this work?
Thanks -
Problem with Function returned without value -
all i am having a problem w/ jdev passing the values. when hardcoded it works. when i remove to pass the 2 vals for doc_type and doc_num the params are being passed to the impl but the String sql = " BEGIN :5 := scotts_test_proc.get_log(:1, :2, :3, :4 ); END; "; is not sending the values to the pkg. to verify i am getting data i created a table to store the data being passed/retrieved by function. i am getting the log_pieces posted when hard coded so i know that works. but when i try to pass the doc_type and doc_num it errors w/ function returend without value . am i passing the params correctly from co to impl to func to get the return l0g_piece. thats for the help
calling package
spec
function Get_Log( -- rmode IN NUMBER , rmode IN STRING, doc_type IN VARCHAR2 DEFAULT 'TEL',
doc_id IN VARCHAR2 DEFAULT NULL , doc_num IN VARCHAR2 DEFAULT NULL
-- , p_out out varchar2
) -- IS --proc
RETURN varchar2 IS --function
body
l_doc_type := 'TEL';- remove this hardcoded
l_doc_type := doc_type ; --to pass the param
IF l_doc_type = 'TEL' THEN
-- l_log_pieces := Get_TEL(TRIM(3524204)); --change 3524204 to doc_num hardcoded presently
l_log_pieces := Get_TEL(TRIM(doc_num)); --to pass the param
-- (doc_num);
l_log_piece := l_log_pieces(1);
-- p_out := l_log_piece ;
insert into isitthere (doc_type, doc_num, isitthere) VALUES (doc_type, doc_num, l_log_piece); commit;
return l_log_piece; -- function -- return p_out; -- function p_out := l_log_piece ; proc
END IF; --if doc type is TEL
FROM CO
System.out.println("CO Passing paramDOC_TYPE for -------> " +docAbbr.getValue(pageContext) ); -- passing TEL
System.out.println("CO Passing paramDOC_NUM for -------> " + paramDOC_NUM ); -- passing 88
String getDocAbbrForHTML = docAbbr.getText(pageContext);
System.out.println("Passing CO getDocAbbrForHTML for -------> " + getDocAbbrForHTML ); -- passing TEL
Serializable paramDocLocatorParamList [] = {paramRMODE, getDocAbbrForHTML , paramDOC_ID, paramDOC_NUM , p_out };
OAApplicationModule am = (OAApplicationModule)pageContext.getApplicationModule(webBean);
OADBTransaction dbtrans;
OAViewObject docLocator = (OAViewObject)am.findViewObject("DocLocatorVO1");
Serializable paramABC = "TELNET";
paramABC = am.invokeMethod("getHTMLString", paramDocLocatorParamList);
rtxt0.setValue(pageContext, "here it is 12354" + paramABC.toString() );
// docLocator.executeQuery();
// --------------- End getHTMLString ----------------- //
FROM AM IMPL
public String getHTMLString ( String paramRMODE, String getDocAbbrForHTML , String paramDOC_ID, String paramDOC_NUM, String p_out )
System.out.println("Entering The AM Impl");
System.out.println("Passing getDocAbbrForHTML in IMPL -------> " +getDocAbbrForHTML ); -- got TEL in param
System.out.println("Passing paramDOC_NUM in IMPL -------> " + paramDOC_NUM ); -- got 88 in param
CallableStatement st = null;
OADBTransaction txn = (OADBTransaction)getDBTransaction();
Connection conn = txn.getJdbcConnection();
String sql = " BEGIN :5 := scotts_test_proc.get_log(:1, :2, :3, :4 ); END; ";
CallableStatement cs = txn.createCallableStatement(sql,1);
String ErrorExist = "";
String getHTML = "";
try
cs.setString(1, paramRMODE); // cs.setInt(1, paramRMODE.intValue()); // cs.setInt(1,Integer.parseInt(paramRMODE));
cs.setString(2, getDocAbbrForHTML); //paramDOC_TYPE);
cs.setString(3, paramDOC_ID);
cs.setString(4, paramDOC_NUM);
// cs.setString(5,p_out); // --param
/* cs.registerOutParameter(1,Types.CHAR);
cs.registerOutParameter(2,Types.CHAR);
cs.registerOutParameter(3,Types.CHAR);
cs.registerOutParameter(4,Types.CHAR);*/
cs.registerOutParameter(5,Types.VARCHAR);
cs.execute();
getHTML = cs.getString(5 ) ;
p_out = getHTML;
//this string is to see my results. only......
String x ="abc 123";/*"<BR><font face=Verdana ><b>TEL Document Action History <BR><font color=#336699>(3524204 Nosulina, Yelena N COMPLETE)</b></font></font><br><br><table border=1 width=100% cellspacing=0 cellpadding=2 bordercolor=#EEEEDC> <tr bgcolor=#F7F7E7>"
+ " <td width=11% valign=top align=left><font face=Verdana size=2 color=#336699><b>Action</b></font></td> <td width=17% valign=top align=left ><font face=Verdana size=2 color=#336699><b>Approver UserName</b></font></td> <td width=14% valign=top align=left ><font face=Verdana size=2 color=#336699><b>Date/Time </b></font></td> <td width=56% valign=top align=left ><font face=Verdana size=2 color=#336699><b>Notes</b></font></td> "
+" </tr> <!-- loop thru this set of rows ---> <tr bgcolor=#FFFFFF> <td width=11% valign=top align=left ><font face=Verdana size=2 > </font></td> <td width=17% valign=top align=left ><font face=Verdana size=2> </font></td> <td width=14% valign=top align=left ><font face=Verdana size=2>Dec-20-2011 03:01:23 PM </font></td> <td width=56% valign=top align=left ><font face=Verdana size=2>DOCUMENT CREATED </font></td> </tr> <!-- end loop--> "
+ " <tr bgcolor=#FFFFFF> <td width=11% valign=top align=left ><font face=Verdana size=2 > </font></td> <td width=17% valign=top align=left ><font face=Verdana size=2>McCombs, Tracey L </font></td> <td width=14% valign=top align=left ><font face=Verdana size=2>Dec-30-2011 01:12:10 PM </font></td> <td width=56% valign=top align=left ><font face=Verdana size=2>Requestor </font></td> </tr> <!-- end loop--> <tr bgcolor=#FFFFFF> "
+" <td width=11% valign=top align=left ><font face=Verdana size=2 >WF STARTED </font></td> <td width=17% valign=top align=left ><font face=Verdana size=2>Workflow </font></td> <td width=14% valign=top align=left ><font face=Verdana size=2>Dec-30-2011 01:12:21 PM </font></td> <td width=56% valign=top align=left ><font face=Verdana size=2>Workflow Started </font></td> </tr> <!-- end loop--> <tr bgcolor=#FFFFFF> "
+"<td width=11% valign=top align=left ><font face=Verdana size=2 > </font></td> <td width=17% valign=top align=left ><font face=Verdana size=2>McCombs, Tracey L </font></td> <td width=14% valign=top align=left ><font face=Verdana size=2>Dec-30-2011 01:12:21 PM </font></td> <td width=56% valign=top align=left ><font face=Verdana size=2>SUBMIT </font></td> </tr> <!-- end loop--> <tr bgcolor=#FFFFFF> "
+"<td width=11% valign=top align=left ><font face=Verdana size=2 >NOTIFICATION SENT </font></td> <td width=17% valign=top align=left ><font face=Verdana size=2>Workflow </font></td> <td width=14% valign=top align=left ><font face=Verdana size=2>Dec-30-2011 01:12:21 PM </font></td> <td width=56% valign=top align=left ><font face=Verdana size=2>Notification sent to User Approvals Level 1, Org ID: 455 311402400 Med - Infectious Diseases </font></td> "
+" </tr> <!-- end loop--> <tr bgcolor=#FFFFFF> <td width=11% valign=top align=left ><font face=Verdana size=2 > </font></td> <td width=17% valign=top align=left ><font face=Verdana size=2>Brownlow, Lana Jill </font></td> <td width=14% valign=top align=left ><font face=Verdana size=2>Jan-03-2012 08:49:48 AM </font></td> <td width=56% valign=top align=left ><font face=Verdana size=2>Approved : </font></td> </tr> <!-- end loop--> <tr bgcolor=#FFFFFF> "
+" <td width=11% valign=top align=left ><font face=Verdana size=2 >USER APPROVED </font></td> <td width=17% valign=top align=left ><font face=Verdana size=2>Workflow </font></td> <td width=14% valign=top align=left ><font face=Verdana size=2>Jan-03-2012 08:49:48 AM </font></td> <td width=56% valign=top align=left ><font face=Verdana size=2>Completed all User Approvals </font></td> </tr> <!-- end loop--> <tr bgcolor=#FFFFFF> "
+ " <td width=11% valign=top align=left ><font face=Verdana size=2 >CENTRAL APPROVED </font></td> <td width=17% valign=top align=left ><font face=Verdana size=2> </font></td> <td width=14% valign=top align=left ><font face=Verdana size=2>Jan-03-2012 08:49:48 AM </font></td> <td width=56% valign=top align=left ><font face=Verdana size=2>Completed Central Approval Process </font></td> </tr> <!-- end loop--> <tr bgcolor=#FFFFFF> "
+" <td width=11% valign=top align=left ><font face=Verdana size=2 > </font></td> <td width=17% valign=top align=left ><font face=Verdana size=2> </font></td> <td width=14% valign=top align=left ><font face=Verdana size=2>Jan-03-2012 02:17:07 PM </font></td> <td width=56% valign=top align=left ><font face=Verdana size=2>DOCUMENT REASON CHANGED TO COMPLETE. DATA LOADED IN BASE TABLES. </font></td> </tr> <!-- end loop--></table>";
getHTML = x;
System.out.println("getHTML 1234 is " + getHTML ); -- testing output to get returned
cs.close();
catch (SQLException sqle)
try { cs.close(); }
catch (Exception e) {}
throw OAException.wrapperException(sqle);
return getHTML;when return is encountered your function terminates.
-
Oracle 11g Table function returns no records on first call
Hello,
On a Oracle 11g R2 I've a table function ( PIPELINED ) returning rows selected from a table.
The first time the function is selected, in a session ( I've tried to disconnect and log in again ), it returns no rows.
I've tried to log the call using DBMS_OUTPUT and from what I see the select on the table function returns no rows and no output is printed. So I presume Oracle is not calling the function.
The same function on a similar environment ( same db versions, patches and database structure ) works fine. The second environment is a production environment so it has more memory and some other settings enabled.
Does anyone know of settings that can relate to this behaviour ?
Thanks in advance for the help.
Regards,
Stefano MuretThank you for answering so fast.
Here's the function code:
FUNCTION template_parameters (iTemplate IN TEMPLATE_RAW_DATA.TMPL_ID%TYPE := NULL)
RETURN table_type_tmpl_parameters PIPELINED
IS
li_exception INTEGER DEFAULT -20025;
POUT_PARM TABLE_TYPE_TMPL_PARAMETERS;
lt_parms table_type_tmpl_parms_raw;
sParmCheck VARCHAR2(4000);
iOccurrence INTEGER;
BEGIN
pOut_Parm := table_type_tmpl_parameters();
pOut_Parm.EXTEND;
select
tmpl_id
*,tmpl_name*
*,replace(upper(trim(sql_out)),'[SCHEMA].')*
*,UPPER(TRIM(out_tmpl_parms))*
bulk collect into lt_parms
from ref_templates
where tmpl_id = NVL(iTemplate,tmpl_id)
order by tmpl_id;
FOR k IN 1..lt_parms.COUNT
LOOP
pOut_Parm(1).tmpl_id := lt_parms(k).tmpl_id;
pOut_Parm(1).tmpl_name := lt_parms(k).tmpl_name;
FOR i IN 1..2
LOOP
IF i = 1 THEN
sParmCheck := lt_parms(k).sql_out;
ELSE
sParmCheck := lt_parms(k).sql_parms;
END IF;
iOccurrence := 1;
*pOut_Parm(1).parameter_name := regexp_substr(sParmCheck,'\[[^\[]+\]',1,iOccurrence);*
WHILE pOut_Parm(1).parameter_name IS NOT NULL
LOOP
PIPE ROW (pOut_Parm(1));
iOccurrence := iOccurrence + 1;
*pOut_Parm(1).parameter_name := regexp_substr(sParmCheck,'\[[^\[]+\]',1,iOccurrence);*
END LOOP;
END LOOP;
END LOOP;
RETURN;
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(li_exception,SUBSTR(SQLERRM,1,1000));
RETURN;
END template_parameters;
This function is part of a package.
The data on both environments is the same. -
Materialized View with column based on PL/SQL function returning object
I have the following problem - it is known that materialized view wants PL/SQL functions used in it to be DETERMINISTIC. And it appears that a function which returns SDO_GEOMETRY cannot be DETERMINISTIC - I can add DETERMINISTIC modifier to my function which returns sdo_geometry based on USNG grid ID and save the package, and it compiles and runs fine with regular queries, but when it comes to materialized view (mview), the following error is thrown:
ORA-12018: following error encountered during code generation for "SCHEMA"."MVIEW_NAME"
ORA-00932: inconsistent datatypes: expected NUMBER got MDSYS.SDO_GEOMETRY
Looks like DETERMINISTIC modifier is not fully supported for object types. I have tried to use SDO_CS.FROM_USNG Oracle's function, and it appeared that this function is also non-deterministic - I cannot refresh mview with P or F on-demand refresh method (see http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14223/refresh.htm#i1008349 for a list of on-demand refresh methods). Without that function I can refresh mview with P or F flags.Hi,
Yes, the Chart Series can be based on "Function Returing SQL Query" and the "SQL" would be something like:
DECLARE
vSQL VARCHAR2(1000);
BEGIN
vSQL := 'SELECT NULL LINK, ENAME LABEL, SAL VALUE FROM EMP ORDER BY ENAME';
RETURN vSQL;
END;You should tick the "Save query without validation" underneath that. Without this, there is a validation error - the ; at the end is required to get the chart to function correctly but the validator sees this as an error.
You would need to create this separately from the report. No matter how you did it, the chart would still run a SQL statement to generate the output. If you wanted to use the "same data", then you could create a collection using the PL/SQL and base both the report and the chart on the collection instead.
Andy -
Hi guys,
A query suddenly became very slow & has remained like it while connecting over a database. I assume the reason is because the data is being retrieved from 6 tables across a link (6 different connections to the same database) so I thought a view should be better as I had a similar issue and this seemed to resolve it. However I then thought that perhaps a function returning the results would be faster as it would mean I could include the where clauses & group by clause to be done remotely on the database rather than locally after much more rows were returned...is this assumption correct?
My query is as follows:
select rpad(username,18) user_name, rpad(terminal,18) terminal_id, rpad(userhost,30) host_name,
action_name, count(*) actions, sum(sessioncpu) session_cpu
from
select username,
terminal,
userhost,
action_name,
to_char(timestamp,'DD/MM/YYYY HH24:MI:SS') timestamp,
logoff_time,
returncode, session_cpu sessioncpu
from dba_audit_session@XXX
where (logoff_time >= sysdate - :P1_RAD
AND :P1_RAD IS NOT NULL AND :P1_RAD != -1
AND :REQUEST != 'But')
OR (logoff_time >= to_TIMESTAMP(TO_DATE(:P1_FROM, 'DD-MON-YY') || ' ' || :P1_FROM_HOUR, 'DD-MON-YY HH24:MI:SS')
AND logoff_time < to_TIMESTAMP(TO_DATE(:P1_TO, 'DD-MON-YY') || ' ' || :P1_TO_HOUR, 'DD-MON-YY HH24:MI:SS')
AND :REQUEST = 'But'
AND :P1_FROM IS NOT NULL AND :P1_TO IS NOT NULL)
union
select username,
terminal,
userhost,
action_name,
to_char(timestamp,'DD/MM/YYYY HH24:MI:SS') timestamp,
logoff_time,
returncode, sessioncpu
from
select
userid USERNAME ,
userhost USERHOST ,
terminal TERMINAL ,
cast (
(from_tz(ntimestamp#,'00:00') at local) as date) timestamp,
act.name ACTION_NAME ,
logoff$time logoff_time /* LOGOFF_TIME */,
sessionid /* SESSIONID */,
returncode /* RETURNCODE */,
sessioncpu /* SESSION_CPU */
from sys.aud_archive@XXX aud, system_privilege_map@XXX spm, system_privilege_map@XXX spx,
STMT_AUDIT_OPTION_MAP@XXX aom, audit_actions@XXX act
where aud.action# = act.action (+)
and - aud.logoff$dead = spm.privilege (+)
and aud.logoff$dead = aom.option# (+)
and - aud.priv$used = spx.privilege (+)
and act.action between 100 and 102
where (logoff_time >= sysdate - :P1_rad
AND :P1_RAD IS NOT NULL AND :P1_RAD != -1
AND :REQUEST != 'But')
OR (logoff_time >= to_TIMESTAMP(TO_DATE(:P1_FROM, 'DD-MON-YY') || ' ' || :P1_FROM_HOUR, 'DD-MON-YY HH24:MI:SS')
AND logoff_time < to_TIMESTAMP(TO_DATE(:P1_TO, 'DD-MON-YY') || ' ' || :P1_TO_HOUR, 'DD-MON-YY HH24:MI:SS')
AND :REQUEST = 'But'
AND :P1_FROM IS NOT NULL AND :P1_TO IS NOT NULL)
group by username, terminal, userhost, action_name
order by actions desc;So it would take 6 parameters (p1_rad, request, p1_from, p1_to, p1_from_hour, p1_to_hour) and return a table with 8 columns. Would the WHERE & GROUP BY clauses being done remotely rather than on APEX be much better?
MikeIn general functions don't help much to increase the performance.
However sometimes you can programatically choose different select statements depending whether a parameter is filled by the user or not. This allows you as a programmer to provide different and optimized statements depening on the input conditions.
simplified pseudocode example
"SELECT"
select *
from myTable
where (column1 = :param1 or :param1 is null); /* problematic to get an index scon on column1 for this OR expression */
"PL/SQL"
if :param1 is null then
select *
bulk collect into ...
from myTable; /* Full table scan will be used */
else
select *
bulk collect into ...
from myTable
where column1 = :param1; /* index scan on column1 can be used, column historgrams will be considered */
end if; -
How to migrate sql server 2000 user defined function returns table
Hi,
How do I capture the SQL Server 200 user defined function that returns table? Is this supported in the current version of Oracle Migration Workbench? I am using the latest version - Release 9.2.0.1.0 with SQL SERVER 2000 plug-in.
I was able to capture the SQL Server 2000 user defined function that returns string and smalldatetime but not the functions return table during the migrate data source stage.
Thanks in Advance,
SusanSusan,
This is not currently supported. The next release of the Oracle Migration Workbench (due very soon), will do a better job of catching this mad reporting an error. We are looking into a suitable mapping and have created bug # 2355073 - TABLE DEFINITIONS NOT ACCEPTED FOR TABLE FUNCTIONS to track this issue.
Once possible solution we are looking into is using the object type to emulate. Here is an example from the bug:
Original table
SQL> create table tabela (a number, b number, c number, d number);
SQL> insert some values...
SQL> select * from tabela;
A B C D
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
SQL Server 2000 code
CREATE FUNCTION FUNCRETORNATABELA()
RETURNS TABLE
AS
RETURN SELECT A,B,C,D FROM TABELA
SELECT A,B,C,D
FROM FUNCRETORNATABELA()
ORDER BY A
Oracle code (workaround)
SQL> create or replace type MyObjType as object (
2 a number, b number, c number, d number);
3 /
Type created.
SQL> create or replace type MyTabType as table of MyObjType;
2 /
Type created.
SQL> create or replace function teste return Mytabtype pipelined as
2 aa MyObjType := MyObjType(null, null, null, null);
3 cursor c1 is select a,b,c,d from tabela;
4 begin
5 open c1;
6 loop
7 fetch c1 into aa.a, aa.b, aa.c, aa.d;
8 exit when c1%NOTFOUND;
9 pipe row (aa);
10 end loop;
11 close c1;
12 return;
13 end;
14 /
Function created.
SQL> select * from table(teste);
A B C D
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
SQL> select a, c from table(teste) order by c desc;
A C
4 4
3 3
2 2
1 1
Donal
Maybe you are looking for
-
Hello Experts, I have a requirement to design all fields in a form dynamically..! It means if the user selects speific fields in a custom config, the form should be genarated with only those fields. I know it can be done placin
-
Deploy of Essbase Cube from EPMA to Shared Services Project is not possible
We cannot deploy Essbase Cubes to shared services projects. The projects are not selectable in the box in the deploy dialog. Help is urgently needed. Our version is 11.1.1.3. Many thanks Michael
-
I paid for adobe professional but never got anything
Hi I paid on the 31st of March and I haven't received any email or any notice regarding the download/serial number. I think that I probably provided the wrong email address when typing my details. What can I do?. It would be nice to have someone to t
-
I had to reboot my computer and my original download was deleted, how can I download adobe creative cloud under my account again?
-
Considering current timestamp while running queries
Hi, We have designed an extract query on Oracle Database which picks up all the changes happened from 2 AM (for eg. last_update_date> 10/24/2007 2 AM ). Let us assume that the SQL script runs @ 7 AM Everyday and takes approximately 30 minutes. We are