PL/SQL toolkit -- checkbox values in array parameter
I have the following issue that I have been staring at for a couple of hours now and unable to see what’s wrong:
I have a some-what complex PL/SQL application written, with lots of procedures, functions, etc. One of the stored procedures prints a check-box question, where the user has 7 selections to choose from. The results are stored in an ‘array’ of type: TYPE varchar2_tabletype IS TABLE OF VARCHAR2(7) INDEX BY BINARY_INTEGER;
The way the check-boxes are printed to the screen and the values captured is via the following sample code:
-- Assign which check boxes were checked
IF pv_categories.COUNT > 0
THEN
FOR i IN pv_categories.FIRST .. pv_categories.LAST
LOOP
lv_options (pv_categories(i)) := 'checked';
END LOOP;
END IF;
OPEN cursor_categories;
FOR i IN 1 .. 7
FETCH cursor_categories INTO value, item_id;
EXIT WHEN cursor_categories%NOTFOUND;
-- HTML call to open a row exists here
-- Code to print the check-box:
twbkfrmt.p_tabledata ( HTF.formcheckbox('pv_sensitive', item_id, lv_options(i),
'ID="item_id"' ));
Etc…
Then, in another function, I am attempting to print the array results – and I get a data not found error/exception. Please also note that once the user makes a selection of the categories – they do get properly inserted into the database.
Let’s say a user made 4 selections having a value of 1, 2, 3 and 4.
When I print pv_categories(1): 1 gets printed.
When I print pv_categories(2): 2 gets printed.
When I attempt to print pv_categories(3) – (it should exist) – a data not found error results.
Also, when I print to the screen (for testing purposes) pv_categories.count, the result is 5, versus 4. Any ideas as to what I may be doing wrong?
This is not Oracle Forms, just a PL/SQL web application on a server.
I used the following info. to guide me: http://download.oracle.com/docs/cd/B10501_01/appdev.920/a96590/adgweb.htm
However, as already mentioned, I am receiving strange errors at the moment when attempting to 'read' the values stored in the array.
I thought this forum was for any PL/SQL questions? I don't know where else to post, if this isn't intended for that case?
Similar Messages
-
Bug? java.sql.SQLException: No value specified for parameter 1
ENV: Jdev1012+JHS1012(evaluation version)+MySql5.0 Or ORACLE 10.1.2
ERR INFO:
20:42:22 DEBUG (JhsDataAction) -Executing action /main
20:42:22 DEBUG (JhsDataAction) -Created searchBean map and stored on session
20:42:22 DEBUG (JhsDataAction) -Created new searchBean for SysRoleFirstLevelFuncUIModel and added to quick search bean map
20:42:22 DEBUG (JhsDataAction) -Stored searchBean for SysRoleFirstLevelFuncUIModel on request
[red]
20:42:22 DEBUG (JhsDataAction) -ViewObject SysRoleFirstLevelFuncView1: value of bind param 0 set to S001
20:42:22 DEBUG (JhsDataAction) -ViewObject SysRoleFirstLevelFuncView1: executing query, bind parameter values have changed
05/11/22 20:42:23 java.sql.SQLException: No value specified for parameter 1[red]
05/11/22 20:42:23 at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:1253)
05/11/22 20:42:23 at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:1201)
05/11/22 20:42:23 at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:966)
05/11/22 20:42:23 at oracle.jbo.server.QueryCollection.buildResultSet(QueryCollection.java:691)
05/11/22 20:42:23 at oracle.jbo.server.QueryCollection.executeQuery(QueryCollection.java:547)
05/11/22 20:42:23 at oracle.jbo.server.ViewObjectImpl.executeQueryForCollection(ViewObjectImpl.java:3354)
05/11/22 20:42:23 at oracle.jbo.server.ViewRowSetImpl.execute(ViewRowSetImpl.java:667)
05/11/22 20:42:23 at oracle.jbo.server.ViewRowSetImpl.executeQueryForMasters(ViewRowSetImpl.java:773)
05/11/22 20:42:23 at oracle.jbo.server.ViewRowSetImpl.executeQuery(ViewRowSetImpl.java:710)
05/11/22 20:42:23 at oracle.jbo.server.ViewObjectImpl.executeQuery(ViewObjectImpl.java:3294)
05/11/22 20:42:23 at oracle.adf.model.bc4j.DCJboDataControl.executeIteratorBindingIfNeeded(DCJboDataControl.java:803)
05/11/22 20:42:23 at oracle.adf.model.binding.DCIteratorBinding.executeQueryIfNeeded(DCIteratorBinding.java:1587)
05/11/22 20:42:23 at oracle.adf.model.binding.DCBindingContainer.refreshControl(DCBindingContainer.java:1544)
05/11/22 20:42:23 at oracle.jheadstart.controller.strutsadf.action.JhsDataAction.applyIterBindParams(JhsDataAction.java:2785)
05/11/22 20:42:23 at oracle.jheadstart.controller.strutsadf.action.JhsDataAction.prepareModel(JhsDataAction.java:3136)
05/11/22 20:42:23 at oracle.adf.controller.struts.actions.DataAction.prepareModel(DataAction.java:486)
05/11/22 20:42:23 at oracle.adf.controller.lifecycle.PageLifecycle.handleLifecycle(PageLifecycle.java:105)
05/11/22 20:42:23 at oracle.adf.controller.struts.actions.StrutsUixLifecycle.handleLifecycle(StrutsUixLifecycle.java:70)
05/11/22 20:42:24 at oracle.adf.controller.struts.actions.DataAction.handleLifecycle(DataAction.java:223)
05/11/22 20:42:24 at oracle.jheadstart.controller.strutsadf.action.JhsDataAction.handleLifecycle(JhsDataAction.java:389)
05/11/22 20:42:24 at oracle.adf.controller.struts.actions.DataAction.execute(DataAction.java:155)
05/11/22 20:42:24 at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
05/11/22 20:42:24 at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
05/11/22 20:42:24 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1485)
05/11/22 20:42:24 at oracle.jheadstart.controller.strutsadf.JhsActionServlet.process(JhsActionServlet.java:127)
05/11/22 20:42:24 at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:527)
05/11/22 20:42:24 at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
05/11/22 20:42:24 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
05/11/22 20:42:24 at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:65)
05/11/22 20:42:24 at oracle.security.jazn.oc4j.JAZNFilter.doFilter(Unknown Source)
05/11/22 20:42:24 at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:663)
05/11/22 20:42:24 at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:330)
05/11/22 20:42:24 at com.evermind.server.http.ServletRequestDispatcher.forward(ServletRequestDispatcher.java:222)
05/11/22 20:42:24 at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
05/11/22 20:42:24 at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
05/11/22 20:42:24 at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
05/11/22 20:42:24 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1485)
05/11/22 20:42:24 at oracle.jheadstart.controller.strutsadf.JhsActionServlet.process(JhsActionServlet.java:127)
05/11/22 20:42:24 at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:527)
05/11/22 20:42:24 at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
05/11/22 20:42:24 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
05/11/22 20:42:24 at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:65)
05/11/22 20:42:24 at oracle.security.jazn.oc4j.JAZNFilter.doFilter(Unknown Source)
05/11/22 20:42:24 at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:16)
05/11/22 20:42:24 at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:239)
05/11/22 20:42:24 at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:20)
05/11/22 20:42:24 at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:239)
05/11/22 20:42:24 at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:20)
05/11/22 20:42:24 at oracle.jheadstart.controller.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:172)
05/11/22 20:42:24 at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:659)
05/11/22 20:42:24 at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:330)
05/11/22 20:42:24 at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:830)
05/11/22 20:42:24 at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:285)
05/11/22 20:42:24 at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:126)
05/11/22 20:42:24 at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
05/11/22 20:42:24 at java.lang.Thread.run(Thread.java:534)
the SQL for my VO is :
SysRoleFirstLevelFuncView :
SelectList="SysTabFunction.id,
SysTabFunction.name,
SysTabFunction.address,
SysTabFunction.parent_func,
SysTabRoleRight.ROLE_ID,
SysTabRoleRight.FUNC_ID,
SysTabFunction.disp_order"
FromList="SYS_TAB_FUNCTION SysTabFunction, SYS_TAB_ROLE_RIGHT SysTabRoleRight"
Where="SysTabFunction.Level=1 and SysTabFunction.id=SysTabRoleRight.FUNC_ID And SysTabRoleRight.Access_Type='Y' And SysTabRoleRight.Role_Id=?
the Action In my struts-config.xml is :
<action path="/main" input="/WEB-INF/page/main.uix" type="oracle.jheadstart.controller.strutsadf.action.JhsDataAction" className="oracle.jheadstart.controller.strutsadf.action.JhsDataActionMapping" parameter="/WEB-INF/page/main.uix" name="DataForm" unknown="false">
<set-property property="modelReference" value="SysRoleFirstLevelFuncUIModel"/>
]red]<set-property property="bindParams" value="SysRoleFirstLevelFuncTreeIterator=${sessionScope.UserInfo.roleId}"/>[red] <forward name="SysRoleSecondLevelFunc2" path="/StartSysRoleSecondLevelFunc2.do"/>
</action>
we can find the parameter is set in the error message.is it a bug?
thanks in advance
best regards.Guo,
I see a question mark in the sql statement, instead of the Oracle-style bind parameter notation which would be ":1". Can you change your VO to use Oracle-Style bind params and see whether it works?
Steven Davelaar,
JHeadstart Team. -
I am using the database connectivity (ADO based) tool and I want to be able to insert a null values.
I have included a simple VI that demonstrates how this works with SQL toolkit .
Null values are very useful and occur frequently in dealing with data. I wish that LabVIEW handled them much better - (e.g. there is not datatype in LabVIEW corresponding to a Null value).The VI was not attached but I'm going to answer with what I have here.
- Currently, the Database Toolset converts NULLs to the default value for LabVIEW data types (ie, False for Boolean, empty strings, zero for numbers, empty arrays, etc). In the user manual there is an example that shows database records containing NULL values being first converted to a string, empty strings (the NULLs) are then converted to NaNs instead of the usual zero value. This method requires you to know what data types each field contains and that they know what to look for and how to convert the data.
You can go to this following link to suggest that a null datatype be implemented:
https://sine.ni.com/apps/we/nicc.call_me?p_country=&p_lang_id=US&p_form_id=58
-Also you cannot leave par
ameters values empty because there is a big difference between executing an SQL statement and doing a Parameterized Query, especially when looking at the low-level ADO layer.When doing Parameterized Queries, you MUST specify all parameter values - leaving them empty results in ADO trapping errors rather than using a default value.
Regards,
Cyril Bouton
Applications Engineer
National Instruments
Cyril Bouton
Active LabVIEW Developper -
Can I use the wizards to build a form that submits multiple checkboxes as an array?
I could do this by hand, but for maintenance ease would prefer that the toolkit understand all my forms. Has anyone else figured out how to do this?
Here's the scenario:
On page load, a query is used to get a recordset that builds a form representing every item in one table, each row represented by a checkbox. The checkboxes are all named with the same name, like "item[]", and the user needs to be able to check as many or as few of the checkboxes as necessary. Upon form submission, each item referenced in the array (representing an entry from that table) will be associated with the user as a new entry in a join table. It's a many-to-many relationship.
My problem is that, in the wizard dialogs, there is no option for submitting checkboxes as an array. Checkboxes are only used as a boolean operator. Am I missing something?Hi,
ADDT comes with a server behaviour called "Comma-separated Checkboxes" which lets you include comma-separated checkboxes in your form. Before applying it, there must be a recordset created in the Dreamweaver page, and also an input item added.
This server behavior is accessible from the Application panel, Server Behaviors > + > Developer Toolbox > Form Controls > Comma-separated Checkboxes.
The ADDT help file will tell you more about it, please see "Form Controls" -> "Comma Separated Checkboxes".
>>
Upon form submission, each item referenced in the array (representing an entry from that table) will be associated with the user as a new entry in a join table. It's a many-to-many relationship.
>>
This server behaviour uses a different "value storage & retrieval" method as explained in the help´s "View Comma-separated Checkboxes in browser" chapter, but maybe it will help you though
Günter Schenk
Adobe Community Expert, Dreamweaver -
Passing checkbox values to popup window on page submit
Hello,
I'm using APEX 3.2.
On one page I have a SQL report with checkboxes that are dynamically created using SQL: select apex_item.checkbox(1, bm_id) as "check", ...
I now want to add a button to the page and when a user clicks on the button, the page should submit and a popup window should open with some extra fields to fill in. Now, in the popup window, I want to add a PL/SQL process and loop to all the values of the checked checkboxes in the parent page using the APEX_APPLICATION.G_F01() array. Can I do this? I tried it but the array always seems to be empty. Do I have to pass all checked values to the Javascript function which opens the popup window??
Thanks,
MatthiasMatthias:
The APEX_APPLICATION.G_F01() will have values only after the form has been submitted.
So,your best bet is to use javascript to make the selected checkbox values available in the pop-up window.
Varad -
UTL_SMTP , ORA-06502: PL/SQL: numeric or value error
Hi there,
I have a procedure that sends emails using UTL_SMTP. It is showing the "ORA-06502: PL/SQL: numeric or value error" whenever the message spans over the limit of the varchar2 type (32'767). I want to send in one email more than that limit, is there a way? any help?
Thanks in advancetry this procedure... it works to me!!
create or replace procedure po8.mail_files ( from_name varchar2,
to_name varchar2,
subject varchar2,
message varchar2,
max_size number default 9999999999,
filename1 varchar2 default null,
filename2 varchar2 default null,
filename3 varchar2 default null,
debug number default 0 ) is
This procedure uses the UTL_SMTP package to send an email message.
Up to three file names may be specified as attachments.
Parameters are:
1) from_name (varchar2)
2) to_name (varchar2)
3) subject (varchar2)
4) message (varchar2)
5) max_size (number)
5) filename1 (varchar2)
6) filename2 (varchar2)
7) filename3 (varchar2)
eg.
mail_files( from_name => 'oracle' ,
to_name => '[email protected]' ,
subject => 'A test',
message => 'A test message',
filename1 => '/data/oracle/dave_test1.txt',
filename2 => '/data/oracle/dave_test2.txt');
Most of the parameters are self-explanatory. "message" is a varchar2
parameter, up to 32767 bytes long which contains the text of the message
to be placed in the main body of the email.
filename{1,2,3} are the names of the files to be attached to the email.
The full pathname of each file must be specified. The files must exist
in one of the directories specified in the init.ora parameter
UTL_FILE_DIR. All filename parameters are optional: It is not necessary
to specify unused file parameters (eg. filename3 is missing in the above
example).
The max_size parameter enables you to place a constraint on the maximum
size of message, including all attachments, that the procedure will send.
If this limit is exceeded, the procedure will truncate the message at
that point with a '*** truncated ***' message. The default is effectively
unlimited. However, the text of message body is still limited to 32Kb, as
it is passed in as a varchar2.
Obviously, as with any Oracle procedure, the parameter values can (and
usually will be) PL/SQL variables, rather than hard-coded literals, as
shown here.
Written: Dave Wotton, 14/6/01 (Cambridge UK)
This script comes with no warranty or support. You are free to
modify it as you wish, but please retain an acknowledgement of
my original authorship.
Amended: Dave Wotton, 10/7/01
Now uses the utl_smtp.write_data() method to send the message,
eliminating the 32Kb message size constraint imposed by the
utl_smtp.data() procedure.
Amended: Dave Wotton, 20/7/01
Increased the v_line variable, which holds the file attachment
lines from 400 to 1000 bytes. This is the maximum supported
by RFC2821, The Simple Mail Transfer Protocol specification.
Amended: Dave Wotton, 24/7/01
Now inserts a blank line before each MIME boundary line. Some
mail-clients require this.
Amended: Dave Wotton, 4/10/01
Introduced a 'debug' parameter. Defaults to 0. If set to
non-zero then errors in opening files for attaching are
reported using dbms_output.put_line.
Include code to hand MS Windows style pathnames.
You may need to modify the following variable if you don't have a local
SMTP service running (particularly relevant to Windows 2000 servers).
Refer to http://home.clara.net/dwotton/dba/oracle_smtp.htm for more
details.
v_smtp_server varchar2(20) := 'doc148.xtec.es';
v_smtp_server_port number := 25;
v_directory_name varchar2(100);
v_file_name varchar2(100);
v_line varchar2(1000);
crlf varchar2(2):= chr(13) || chr(10);
mesg varchar2(32767);
conn UTL_SMTP.CONNECTION;
type varchar2_table is table of varchar2(200) index by binary_integer;
file_array varchar2_table;
i binary_integer;
v_file_handle utl_file.file_type;
v_slash_pos number;
mesg_len number;
mesg_too_long exception;
invalid_path exception;
mesg_length_exceeded boolean := false;
begin
-- first load the three filenames into an array for easier handling later ...
file_array(1) := filename1;
file_array(2) := filename2;
file_array(3) := filename3;
-- Open the SMTP connection ...
conn:= utl_smtp.open_connection( v_smtp_server, v_smtp_server_port );
-- Initial handshaking ...
utl_smtp.helo( conn, v_smtp_server );
utl_smtp.mail( conn, from_name );
utl_smtp.rcpt( conn, to_name );
utl_smtp.open_data ( conn );
-- build the start of the mail message ...
mesg:= 'Date: ' || TO_CHAR( SYSDATE, 'dd Mon yy hh24:mi:ss' ) || crlf ||
'From: ' || from_name || crlf ||
'Subject: ' || subject || crlf ||
'To: ' || to_name || crlf ||
'Mime-Version: 1.0' || crlf ||
'Content-Type: multipart/mixed; boundary="DMW.Boundary.605592468"' || crlf ||
'' || crlf ||
'This is a Mime message, which your current mail reader may not' || crlf ||
'understand. Parts of the message will appear as text. If the remainder' || crlf ||
'appears as random characters in the message body, instead of as' || crlf ||
'attachments, then you''ll have to extract these parts and decode them' || crlf ||
'manually.' || crlf ||
'' || crlf ||
'--DMW.Boundary.605592468' || crlf ||
'Content-Type: text/plain; name="message.txt"; charset=US-ASCII' || crlf ||
'Content-Disposition: inline; filename="message.txt"' || crlf ||
'Content-Transfer-Encoding: 7bit' || crlf ||
'' || crlf ||
message || crlf ;
mesg_len := length(mesg);
if mesg_len > max_size then
mesg_length_exceeded := true;
end if;
utl_smtp.write_data ( conn, mesg );
-- Append the files ...
for i in 1..3 loop
-- Exit if message length already exceeded ...
exit when mesg_length_exceeded;
-- If the filename has been supplied ...
if file_array(i) is not null then
begin
-- locate the final '/' or '\' in the pathname ...
v_slash_pos := instr(file_array(i), '/', -1 );
if v_slash_pos = 0 then
v_slash_pos := instr(file_array(i), '\', -1 );
end if;
-- separate the filename from the directory name ...
v_directory_name := substr(file_array(i), 1, v_slash_pos - 1 );
v_file_name := substr(file_array(i), v_slash_pos + 1 );
-- open the file ...
v_file_handle := utl_file.fopen(v_directory_name, v_file_name, 'r' );
-- generate the MIME boundary line ...
mesg := crlf || '--DMW.Boundary.605592468' || crlf ||
'Content-Type: application/octet-stream; name="' || v_file_name || '"' || crlf ||
'Content-Disposition: attachment; filename="' || v_file_name || '"' || crlf ||
'Content-Transfer-Encoding: 7bit' || crlf || crlf ;
mesg_len := mesg_len + length(mesg);
utl_smtp.write_data ( conn, mesg );
-- and append the file contents to the end of the message ...
loop
utl_file.get_line(v_file_handle, v_line);
if mesg_len + length(v_line) > max_size then
mesg := '*** truncated ***' || crlf;
utl_smtp.write_data ( conn, mesg );
mesg_length_exceeded := true;
raise mesg_too_long;
end if;
mesg := v_line || crlf;
utl_smtp.write_data ( conn, mesg );
mesg_len := mesg_len + length(mesg);
end loop;
exception
when utl_file.invalid_path then
if debug > 0 then
dbms_output.put_line('Error in opening attachment '||
file_array(i) );
end if;
-- All other exceptions are ignored ....
when others then
null;
end;
mesg := crlf;
utl_smtp.write_data ( conn, mesg );
-- close the file ...
utl_file.fclose(v_file_handle);
end if;
end loop;
-- append the final boundary line ...
mesg := crlf || '--DMW.Boundary.605592468--' || crlf;
utl_smtp.write_data ( conn, mesg );
-- and close the SMTP connection ...
utl_smtp.close_data( conn );
utl_smtp.quit( conn );
end;
NOT MINE BUT COPY PASTE TO HELP YOU... -
How to get Checkbox Value from Flex in PHP.
Hi,
I need to know how to get a checkbox value from flex in PHP-POST/GET because I don't know what is the value property of a checkbox in flex.
Please Help.Hi,
It is very simple. Follow the steps below to achieve the solution,
1. Write a check-box change event to capture the value of the check box. Store this value in a variable(say bolChkSelected:Boolean).
2. In step 1 you got the value of the check box. Now your aim is to send the value to php. Declare a httpService in your flex application(i think you are aware of using it).Ok..im writing it
<mx:HTTPService id="sampleService" resultFormat='e4x' url='http://yourdomain/file.php' result='handleResult()' fault='handleFault()'>
</mx:HTTPService>
3. Now the actual solution... u need to send the shcStatus in to php..
Declare an object to hold the data
var objparameters:Object={};
objparameters['CheckBoxdata'] = bolChkSelected;
--in the above line... 'CheckBoxdata' is used as a parameter to php..you shud have the same variable name while accessing in php file also..
in php file..
checkboxstatus = $_POST[''CheckBoxdata''];
echo checkboxstatus
thats it.. -
How to change default value of a parameter and LOV attached to a parameter
Hi All
I am new to discoverer reports and I need to accomplish the following tasks:
1. Need to change the SQL query of a discoverer report
2. Need to change the default value of parameter ( from constant to current month). In the discoverer plus responsibility when I open the report and go to tools>>parameter>>edit
I can see the constant default value given there. On the right hand side there is a drop down which says 'Value'. I guess if i need to put a SQL as defaul value I need to change the drop down to sql or something and then put the SQL. Problem is the drop down is froezen and I cannot change it.
Even if I try to create a new parameter/report.
3. Need to change the LOV associated to the item on which the parameter is based.
I have the discoverer plus responsibility attached to myself and do not have the discoverer administrator tool (desktop developer tool like forms 6i). My questions are:
1. Can I change the SQL query by using discoverer plus responsibility or do I need discoverer administrator tool?
2. Any help on how to get the default value from an SQL query? currently it is a constant value.
3. Is there any way to figure out is the LOV is madeup of fixed constant values (like independednt value set) or they are fetched from some sql query(table validated value sets)?
Any pointers/solutions will be highly appriciated!!!
Thanks in advance.
Thanks and Regards,
ShashankHI,
Need to change the SQL query of a discoverer reportThe discoverer generate the SQL according to the item, calculation and conditions designed in the worksheet.
You cannot edit a specific worksheet SQL.
In order to change the SQL you need to change the worksheet using the "Edit-> worksheet" from the menu.
To change the SQL generated inside the folders you need to do that using the administrator.
Need to change the default value of parameterYou cannot use SQL statements for the parameter default value. it is not supported. if you need default you can use only constant (as it was). otherwise you can set the parameter to be optional and then add to this condition an OR saying that <item>= NVL(:Parameter,<your default>)
as <your default> you can use calculations so that if for example you want the current date you will create a calculation containing: SYSDATE.
Is there any way to figure out is the LOV is madeup of fixed constant values (like independednt value set) or they are fetched from some sql query(table validated value sets)?They are based on SQL, even they are const then you will see it as
select 'a','b'... from dual
you can find the LOV (called item classes) in the administrator.
Go to the item your condition is based on and see its properties.
In the properties you should see the item class it uses.
Close the properties and go to the item classes tab, search for this item class and figure the folder it came from.
This is the folder you need to change in order to change the LOV.
Hope it helped a bit, you sure asked several big questions...
Tamir -
ORA-06502: PL/SQL: numeric or value error: character string buffer too smal
Hi Guys I am getting error ORA-06502: PL/SQL: numeric or value error: character string buffer too small as it said i thought it would be issue with length of feild but i tried to change is nothihg work i am posing code here if any one can please help me on this
PROCEDURE REPORT
p_rpt_from_dt in varchar2,
p_rpt_to_dt in varchar2,
p_apvr_id in tc_wkr.tc_row_id%type default NULL,
p_rpt_type in varchar2 default NULL,
p_backto_pg in varchar2 default NULL
IS
v_rpt_from_dt date := var_to_date(p_rpt_from_dt);
v_rpt_to_dt date := var_to_date(p_rpt_to_dt);
v_time_str varchar2(15);
cursor period_cur
cp_from_dt date,
cp_to_dt date
is
select beg_dt, end_dt
from jmcs_wk_tprd
where beg_dt <= cp_to_dt -- report end date
and end_dt >= cp_from_dt -- report start date
BEGIN
if sys_security('tcsys', 'tc_reports') != 'GRANTED' then
apps_main.access_denied;
return;
end if;
if lg_debug_fl then
v_time_str := to_char(lg_sysdate, 'hh:mi:ss a.m.');
else
v_time_str := tc_time(lg_sysdate);
end if;
/* get the time card time periods applicable to the report */
lga_tc_strt_dt := lga_null_date;
for recs in period_cur(v_rpt_from_dt, v_rpt_to_dt) loop
lga_tc_strt_dt(lga_tc_strt_dt.count+1) := recs.beg_dt;
lga_tc_end_dt(lga_tc_end_dt.count+1) := recs.end_dt;
end loop;
--if p_apvr_id is NULL then
if p_rpt_type != 'D' then
tc_reporting.reports_header
1,
'Time Card Status Report',
'for '||dd_mon_yyyy(v_rpt_from_dt)||' through '||dd_mon_yyyy(v_rpt_to_dt)||'<BR>'||
'Report Date: '||dd_mon_yyyy(lg_sysdate)||' Time: '||v_time_str,
NULL,
NULL,
NULL,
'javascript:window.close()', /* Backto */
'alert(''Reminder! Click on logo when you are ready to return to previous page'')'
end if;
if p_apvr_id is NULL then
sub_STATUS_BD_ALPHA (v_rpt_from_dt, v_rpt_to_dt, TRUE, p_rpt_type, p_apvr_id);
else
htp.p('<!-- Selected Approver ('||p_apvr_id||') -->');
sub_STATUS_BD_APVR (v_rpt_from_dt, v_rpt_to_dt, p_rpt_type, p_apvr_id);
end if;
htp.p('</body></html>');
EXCEPTION
WHEN OTHERS THEN
error_proc(SQLERRM, SQLCODE, owa_util.get_cgi_env('PATH_INFO'));
htp.p('Error Code is :'||SQLERRM);
END REPORT;
This package in trun call other procedure like below
PROCEDURE sub_STATUS_BD_ALPHA
p_rpt_from_dt in date,
p_rpt_to_dt in date,
p_display_hdr in boolean,
p_rpt_type in varchar2 default 'B',
p_apvr_id in tc_wkr.tc_row_id%type default NULL,
p_tcs_user_id in tc_wkr.tc_row_id%type default NULL
IS
v_time_str varchar2(15);
v_apvr_id tc_wkr.tc_row_id%type := 0;
v_a_user_id tc_wkr.tc_row_id%type; -- approver tcs_user_id
v_cnt integer := 0;
v_people_cnt integer := 0;
v_stat_cd varchar2(2000);
v_display_fl boolean := FALSE;
/*===========================================================================*/
cursor people_cur
cp_from_dt in date,
cp_to_dt in date
is
select
d_full_nm_lfm as name,
tc_row_id as tcs_user_id,
tcw_typ as pay_typ,
tcw_id as pay_id,
sys_strt_date as sys_strt_dt,
sys_end_dt
from tc_wkr
where sys_strt_date <= cp_to_dt
and nvl(sys_end_dt, cp_to_dt) >= cp_from_dt
order by upper(d_full_nm_lfm);
/* find the current or the most recent (if no current) approver */
cursor apvr_cur
cp_tcs_user_id in tc_wkr.tc_row_id%type
is
select
a.f_tc_apvr_id as fk_tcs_apvr_id,
w.d_full_nm_lfm as apvr_name,
w.tcw_typ as apvr_pay_typ,
w.tcw_id as apvr_pay_id,
a.strt_dt,
a.end_dt
from tc_wkr w, tc_ap_asmt a
where a.f_tc_wkr_id = cp_tcs_user_id
and w.tc_row_id = a.f_tc_apvr_id
order by a.strt_dt desc;
/* list of existing time cards UNION required time cards */
cursor tc_cur
cp_tcs_user_id in tc_wkr.tc_row_id%type, /* who's time cards */
cp_from_dt in date, /* report period from date */
cp_to_dt in date /* report period to date */
is
select
stat_cd,
strt_dt,
end_dt
from tc
where strt_dt <= cp_to_dt
and end_dt >= cp_from_dt
and fk_tc_wkrtcw_id = cp_tcs_user_id
UNION
select
'Required' as stat_cd,
beg_dt as strt_dt,
end_dt
from jmcs_wk_tprd
where beg_dt <= cp_to_dt
and end_dt >= cp_from_dt
and beg_dt not in (
select strt_dt
from tc
where strt_dt <= cp_to_dt
and end_dt >= cp_from_dt
and fk_tc_wkrtcw_id = cp_tcs_user_id
order by strt_dt;
BEGIN
if lg_debug_fl then
v_time_str := to_char(lg_sysdate, 'hh:mi:ss a.m.');
else
v_time_str := tc_time(lg_sysdate);
end if;
if p_apvr_id > 0 then
lga_report_out := lga_report_out_null;
v_apvr_id := p_apvr_id;
lga_apvr := lga_apvr_null;
select
d_full_nm_lfm,
tc_row_id,
tcw_id,
tcw_typ
into
lga_apvr(1).apvr_name,
lga_apvr(1).apvr_tcs_id,
lga_apvr(1).apvr_pay_id,
lga_apvr(1).apvr_pay_typ
from tc_wkr
where tc_row_id = v_apvr_id;
if lga_apvr(1).apvr_pay_typ != 'S' then
select decode(bend_empl_fl, 'Y', 'E', 'W')
into lga_apvr(1).apvr_pay_typ
from empl
where empl_id = lga_apvr(1).apvr_pay_id;
end if;
end if;
if p_display_hdr then
if lga_tc_strt_dt.count > 6 then /* more than 6 time periods (1 month) */
lga_width(1) := to_char(.15 * lg_page_width_standard);
lga_width(2) := to_char(.08 * lg_page_width_standard);
for i in 1..lga_tc_strt_dt.count loop
lga_width(lga_width.count+1) := to_char(.09 * lg_page_width_standard);
end loop;
lg_page_width_standard := to_number(lga_width(1)) + to_number(lga_width(2));
if nvl(p_apvr_id, 0) = 0 then
lg_page_width_standard := lg_page_width_standard * 2;
end if;
htp.p('<!-- page width = '||lg_page_width_standard||'-->');
for i in 3..lga_width.count loop
lg_page_width_standard := lg_page_width_standard + to_number(lga_width(i));
htp.p('<!-- page width = '||lg_page_width_standard||'-->');
end loop;
lg_page_width := to_char(lg_page_width_standard);
else
lga_width(1) := '15%';
lga_width(2) := '8%';
lga_width(3) := '9%';
lga_width(4) := '9%';
lga_width(5) := '9%';
lga_width(6) := '9%';
lga_width(7) := '9%';
lga_width(8) := '9%';
end if;
sub_DETAIL_PAGE_HD(p_apvr_id);
end if;
/* cursor loop */
for p in people_cur(p_rpt_from_dt, p_rpt_to_dt) loop
/* is/was this person assigned to the selected approver for the report period */
v_display_fl := FALSE;
if nvl(p_tcs_user_id, 0) > 0 then
if p_tcs_user_id = p.tcs_user_id then
htp.p('<br>Selected User');
v_display_fl := TRUE;
end if;
elsif nvl(p_apvr_id, 0) = 0 then
if nvl(p_apvr_id, 0) = 0 then
v_display_fl := TRUE;
elsif p_apvr_id > 0 or p_apvr_id = -1 then
v_display_fl := fct_ASSIGNED_APVR(p.tcs_user_id, p_apvr_id, p_rpt_from_dt, p_rpt_to_dt);
end if;
if v_display_fl then
v_people_cnt := v_people_cnt + 1;
lg_tcs_owner_info.USER_ID := p.tcs_user_id;
lg_tcs_owner_info.PAY_ID := p.pay_id;
lg_tcs_owner_info.PAY_TYPE := p.pay_typ;
lg_tcs_owner_info.SYS_STRT_DT := p.sys_strt_dt;
lg_tcs_owner_info.TERM_DT := p.sys_end_dt;
if p.pay_typ = 'S' then
begin
select wrk_hire_dt
into lg_tcs_owner_info.hire_dt
from subcntr
where sub_id = p.pay_id;
exception
when no_data_found then
tc_debug.html_message('subcntr.pay_id('||p.pay_id||')');
end;
else
select
wrk_hire_dt,
decode(bend_empl_fl, 'Y', 'E', 'W')
into
lg_tcs_owner_info.hire_dt,
lg_tcs_owner_info.pay_type
from empl
where empl_id = lg_tcs_owner_info.PAY_ID;
end if;
if lga_report_out.count = 0 then
lga_report_out(lga_report_out.count+1) := '<table border="1" cellpadding="3" width="'||lg_page_width||'">';
end if;
if mod(v_people_cnt,2) = 1 then
lga_report_out(lga_report_out.count+1) := ('<tr bgcolor="'||lg_odd_bgcolor||'">');
else
lga_report_out(lga_report_out.count+1) := ('<tr bgcolor="'||lg_even_bgcolor||'">');
end if;
lga_report_out(lga_report_out.count+1) := ('<td valign="top"><font size=-2>'||p.name||'</font></td >');
lga_report_out(lga_report_out.count+1) := ('<td valign="top"><font size=-2>'||p.pay_typ||'-'||lpad(p.pay_id,4,'0')||'</font></td >');
if nvl(p_apvr_id, 0) > 0 then /* Single Approver */
/* need approver ID for time card "status" */
lga_apvr := lga_apvr_null; /* clear the approver id array */
lga_apvr(1).apvr_tcs_id := p_apvr_id;
elsif nvl(p_apvr_id, 0) = 0 then /* ALL Approvers */
lga_apvr := lga_apvr_null; /* clear the approver id array */
v_cnt := 0;
for ap in apvr_cur (p.tcs_user_id) loop
if v_cnt = 0 then
/* most recent approver may not be the applicable approver */
v_cnt := 1;
lga_apvr(v_cnt).apvr_name := ap.apvr_name; -- identify multiple approvers for the "status"
lga_apvr(v_cnt).apvr_tcs_id := ap.fk_tcs_apvr_id; -- identify multiple approvers for the "status"
lga_apvr(v_cnt).apvr_pay_id := ap.apvr_pay_id; -- identify multiple approvers for the "status"
v_apvr_id := ap.fk_tcs_apvr_id;
if ap.apvr_pay_typ = 'S' then
lga_apvr(v_cnt).apvr_pay_typ := ap.apvr_pay_typ; -- identify multiple approvers for the "status"
else
select decode(bend_empl_fl, 'Y', 'E', 'W')
into lga_apvr(1).apvr_pay_typ
from empl
where empl_id = lga_apvr(1).apvr_pay_id;
end if;
end if;
if ap.strt_dt <= p_rpt_to_dt and nvl(ap.end_dt, p_rpt_to_dt) >= p_rpt_from_dt then
/* approver record */
lg_tcs_owner_info.APVR_ID := ap.fk_tcs_apvr_id;
lg_tcs_owner_info.APVR_STRT_DT := ap.strt_dt;
lg_tcs_owner_info.APVR_END_DT := ap.end_dt;
don't enter same approver name multiple times
when same approver has been assigned more than once
Example: approver1, approver_2, approver_1 (change back to approver 1)
for i in 1..lga_apvr.count loop
v_apvr_id := ap.fk_tcs_apvr_id;
if lga_apvr(i).apvr_tcs_id = ap.fk_tcs_apvr_id then
/* don't add again */
v_apvr_id := NULL;
exit;
end if;
end loop;
if v_apvr_id is not NULL then
v_cnt := v_cnt + 1;
lga_apvr(v_cnt).apvr_name := ap.apvr_name; -- identify multiple approvers for the "status"
lga_apvr(v_cnt).apvr_tcs_id := ap.fk_tcs_apvr_id; -- identify multiple approvers for the "status"
lga_apvr(v_cnt).apvr_pay_id := ap.apvr_pay_id; -- identify multiple approvers for the "status"
lga_apvr(v_cnt).apvr_pay_typ := ap.apvr_pay_typ; -- identify multiple approvers for the "status"
end if;
end if;
end loop;
/* list approver pay IDs */
lga_report_out(lga_report_out.count+1) := ('<td valign="top"><font size=-2>');
if lga_apvr.count = 0 then
lga_report_out(lga_report_out.count+1) := 'Approver Unassigned';
else
for i in 1..lga_apvr.count loop
if i > 1 then
lga_report_out(lga_report_out.count+1) := '<br>';
end if;
lga_report_out(lga_report_out.count+1) := (lga_apvr(i).apvr_name);
end loop;
end if;
lga_report_out(lga_report_out.count+1) := ('<td valign="top"><font size=-2>');
if lga_apvr.count = 0 then
lga_report_out(lga_report_out.count+1) := 'N/A';
else
for i in 1..lga_apvr.count loop
if i > 1 then
lga_report_out(lga_report_out.count+1) := '<br>';
end if;
lga_report_out(lga_report_out.count+1) := (lga_apvr(i).apvr_pay_typ)||'-'||lpad(lga_apvr(i).apvr_pay_id,4,'0');
end loop;
end if;
lga_report_out(lga_report_out.count+1) := ('</font></td >');
end if;
for t in tc_cur(p.tcs_user_id, p_rpt_from_dt, p_rpt_to_dt) loop
htp.p('<! '||t.strt_dt||', '||t.end_dt||', '||t.stat_cd||' -->');
--lga_report_out(lga_report_out.count+1) := ('<td valign="top"><font size=-2>');
--lga_report_out(lga_report_out.count+1) := (t.stat_cd);
--lga_report_out(lga_report_out.count+1) := ('</font></td >');
/* has the selected approver has completed processing */
if p_apvr_id > 0
and v_apvr_id = p_apvr_id
and v_a_user_id != p_apvr_id
then
exit;
end if;
for ap in apvr_cur (p.tcs_user_id) loop
if apvr_cur%rowcount = 1 then
/* most recent approver assigned */
lg_tcs_owner_info.apvr_id := ap.fk_tcs_apvr_id;
end if;
if ap.strt_dt <= t.end_dt and nvl(ap.end_dt, t.end_dt) >= t.strt_dt then
/* approver assigned during time card period */
lg_tcs_owner_info.apvr_id := ap.fk_tcs_apvr_id;
exit;
end if;
end loop;
lg_tc_status.strt_dt := t.strt_dt;
lg_tc_status.end_dt := t.end_dt;
lg_tc_status.stat_cd := t.stat_cd;
v_stat_cd := fct_TC_STATUS(nvl(p_apvr_id, 0));
lga_report_out(lga_report_out.count+1) := ('<td align="center" valign="top" bgcolor="'||lg_tc_status.bg_color||'">');
lga_report_out(lga_report_out.count+1) := ('<font size=-2 color='||lg_tc_status.font_color||'>');
lga_report_out(lga_report_out.count+1) := v_stat_cd;
lga_report_out(lga_report_out.count+1) := ('</font></td >');
end loop;
lga_report_out(lga_report_out.count+1) := '</tr>';
end if; /* v_display_fl */
end loop;
if p_rpt_type in ('B', 'S') then
lg_page_cnt := lg_page_cnt + 1;
sub_DISPLAY_STATUS_SUMMARY;
end if;
if lga_report_out.count > 0 then
lga_report_out(lga_report_out.count+1) := '</table>';
end if;
if lga_report_out.count > 0 then
if p_rpt_type = 'B' or p_apvr_id > 0 then
if p_display_hdr then
if lg_page_cnt > 0 then
if p_apvr_id > 0 then /* selected individual approver */
htp.p('</table>');
end if;
htp.p('<br style="page-break-after:always">');
htp.p('<!-- &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& -->');
htp.p('<!-- &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& -->');
end if;
lg_page_cnt := lg_page_cnt + 1;
tc_reporting.reports_header
1,
'Time Card Status Report',
'for '||dd_mon_yyyy(p_rpt_from_dt)||' through '||dd_mon_yyyy(p_rpt_to_dt)||'<BR>'||
'Report Date: '||dd_mon_yyyy(lg_sysdate)||' Time: '||v_time_str,
NULL,
NULL,
NULL,
NULL, -- p_backto_pg, /* Backto */
'focus()',
lg_page_cnt
end if;
end if;
if p_rpt_type in ('B', 'D') then
for i in 1..lga_report_out.count loop
htp.p(lga_report_out(i));
end loop;
end if;
end if;
END sub_STATUS_BD_ALPHA;
Some veriable
type report_tc_rec is record
tc_owner_name tc_wkr.d_full_nm_lfm%type,
o_user_id tc_wkr.tc_row_id%type,
o_pay_id varchar2(10),
o_sys_strt_dt date,
o_sys_end_dt date,
tc_apvr_name tc_wkr.d_full_nm_lfm%type,
a_pay_id varchar2(10),
a_user_id tc_wkr.tc_row_id%type,
tc_strt_dt date,
tc_end_dt date,
tc_stat_cd varchar2(50),
ap_strt_dt date,
ap_end_dt date
/* time card owner information */
TYPE tcs_owner_info_rec IS RECORD
USER_ID tc_wkr.tc_row_id%type,
PAY_ID tc_wkr.tcw_id%type,
PAY_TYPE tc_wkr.tcw_typ%type,
HIRE_DT date,
SYS_STRT_DT date,
TERM_DT date,
APVR_ID tc_wkr.tc_row_id%type,
APVR_STRT_DT date,
APVR_END_DT date
/* status code determines report cell font and background colors */
TYPE tc_status_rec IS RECORD
STRT_DT date,
END_DT date,
STAT_CD tc.stat_cd%type,
FONT_COLOR varchar2(16),
BG_COLOR varchar2(16)
/* count of all time card status for report summary */
TYPE tc_status_summary_rec IS RECORD
APPROVED_CNT integer := 0,
REJECTED_CNT integer := 0,
SUBMITTED_CNT integer := 0,
POSTED_CNT integer := 0,
VERIFIED_CNT integer := 0,
OPEN_CNT integer := 0,
NEW_CNT integer := 0,
REQUIRED_CNT integer := 0,
TOTAL_CNT integer := 0
/* determine multiple approvers for individual for selected report period */
TYPE apvr_rec IS RECORD
apvr_name tc_wkr.d_full_nm_lfm%type,
apvr_tcs_id tc_wkr.tc_row_id%type,
apvr_pay_id tc_wkr.tcw_id%type,
apvr_pay_typ tc_wkr.tcw_typ%type
TYPE apvr_id_array_table IS TABLE OF apvr_rec
index by binary_integer;
type output_array is table of varchar2(1000)
index by binary_integer;
type date_array is table of date
index by binary_integer;
type status_array is table of varchar2(1000)
index by binary_integer;
type apvr_array is table of number(8)
index by binary_integer;
lga_report_out output_array; /* array of HTML code to be output to browser */
lga_report_out_null output_array; /* null array of HTML code */
lga_tc_status status_array;
lga_null_status status_array;
lga_tc_strt_dt date_array;
lga_tc_end_dt date_array;
lga_tc_disp date_array; /* start dates of displayed TC for selected user */
lga_null_date date_array; /* null array used to clear other date arrays */
/* LOCAL GLOBAL VARIABLES */
lg_tcs_owner_info tcs_owner_info_rec; /* time card owner information */
lg_tc_status tc_status_rec; /* time card status information */
lg_tc_status_summary tc_status_summary_rec; /* time card count by status */
lg_tc_rec report_tc_rec; /* time card */
lga_apvr apvr_id_array_table; /* array of approver Names and Payroll IDs */
lga_apvr_null apvr_id_array_table; /* clear the lga_apvr array for each user */
lg_sysdate date := sysdate;
lg_debug_fl boolean := FALSE;
lg_debug_owner_id tc_wkr.tc_row_id%type := 9905;
lg_debug_apvr_id tc_wkr.tc_row_id%type := 1000;
The chnages i have done its in bold
Please Advice
Thanks
Edited by: Purvik on Aug 25, 2009 11:59 AMThere is not a chance in the world, especially not knowing column definitions that I, and I suspect most anyone else, is going to wade through this much unformated code looking for an error you couldn't bother to copy in full.
Either tell us, specifically, the line on which the error is occurring or, better yet, start whacking stuff out of your code until you find the offending definition. That is certainly what I would do. Commenting out sections is a marvelous way to quickly find an issue.
Before you post again please read the FAQ. It will explain to you how to properly post and use the tags. -
Hi I have a Sql Query Report Region as defined below. On the report attributes I am not using any "Row Selector". In a After submit process I try to print out the results of the value I have entered in as a value in updatable report and i get the error: I am doing this as a test before i use the data to insert into another table...
I receive this error if I enter in a characters (not numeric) into the "Field Value" field.:
ORA-06502: PL/SQL: numeric or value error: character to number conversion error.
If I enter in a numeric into the "Field Value" text box, then I get the value displayed back without error. I need to be able to enter a varchar value without error.
My SQL QUERY is:
select i.INDEXED_FIELD_ID, i.field_name,
HTMLDB_ITEM.TEXT(3,d.indexed_field_value) field_value,
decode(f.required, 0, 'O', 1, 'R', 'NOT USED') REQUIRED
from XXVG_EFILE_DOCUMENT_FIELDS D,
xxvg_efile_type_fields f, xxvg_efile_indexed_fields i
WHERE f.indexed_field_id = i.indexed_field_id
and f.required in (0,1)
and i.indexed_field_id = d.indexed_field_id(+)
and d.document_id(+) = -1
and f.document_type_id = :p21_doc_type
My after submit process is the following...**Note** I am using P21_test as a field just to display my test. I receive the value back just fine without error if numeric. If varchar, that is when the problems occur. I have used just a length variable like the lettter 't' for testing and still receive the error.
DECLARE
vRow BINARY_INTEGER;
BEGIN
-- update field values
FOR i IN 1 .. HTMLDB_APPLICATION.g_f03.COUNT -- your field value
LOOP
vRow := HTMLDB_APPLICATION.g_f03(i);
IF vRow is Not NULL --means the field has data in it.
THEN
:p21_test := HTMLDB_APPLICATION.G_F03(i); --set a variable to the field with data.
END IF;
END LOOP;
END;
Is there a conversion I need to do? I do not want to do this via checkboxes as I dont want the user have to check a checkbox and then enter a value in. I just want a blank text box the user can enter a value in and then i can do an insert.
Thanks So much.Thanks Scott, That did do the trick as the varchar is now displayed of the entered item.
How do i also display the value of indexed_field_id as well.
I have an insert where i need the indexed field id and the entered field value.
Thanks in advance. -
Help, Cannot connect to ODBC database using SQL Toolkit!
Hello All,
I am toying around with the SQL Toolkit evaluation (2.2 + the patch) and I am having difficulty.
I ran the example program "connect" and it seems to work fine.
However, I try to write my own program and I keep getting the same message:
"Function DBConnect: (return value == -10 [0xFFFFFFF6]).
Native error code - 2147467259 0x80004005
The message differs from time to time, but the return value is constant.
I am using both Microsoft SQL Server 2012 and MySQL.
For MySQL I have installed the latest ODBC connector, 5.3.4. Inside the Control Panel/Data Sources(ODBC), I have a DSN named test_mysql in both User DSN and System DSN.
I ran a test on the connection and the test passes. I am not sure if I should use the ansi or unicode driver, I have tried both with the same success.
I am not sure I had configured the SQL Server connection properly, and will attempt that again.
My CVI Code is simple enough:
hdbc = DBConnect ("DSN=test_mysql");
Every time I get a -10 from DBConnect. Either I have something configured wrong or I am missing something.
Does anyone have any suggestions?
Veni Vidi Duci
Solved!
Go to Solution.Update 2:
After getting off the phone with Tech Support the problem has been identified!
LabWindows SQL toolkit requires 32 bit DNS. My PC is a 64 bit, so my DNS manager defaulted to 64 bit.
I needed to use the 32 bit DNS manager when working with the toolkit.
Once I created my DNS connections using the 32-bit version of the ODBC Datga Source manager, everything worked fine.
See this tech note:
http://digital.ni.com/public.nsf/allkb/E7984C0DA0F0E65086257694005B4CB7
Veni Vidi Duci -
Package Returning Error ORA-06502: PL/SQL: numeric or value error
Hi,
I create a package to export to spread sheet .xls, The package work for simple query if i pass the query to package.
There is no error in package please create the package and do the following as mentioned below
create or replace
PACKAGE export_pkg_spread_sheet
AS
procedure download_excel(vsql in clob );
PROCEDURE excel_header(p_header in out nocopy clob);
procedure excel_content(p_content in out nocopy clob,
vsql in clob );
procedure excel_footer(p_footer in out nocopy clob);
procedure get_usable_sql (p_sql_in IN clob,
p_sql_out OUT clob);
END export_pkg_spread_sheet;
create or replace
PACKAGE body export_pkg_spread_sheet
AS
PROCEDURE excel_header (p_header IN OUT nocopy CLOB)
AS
BEGIN
p_header := '<html><body>';
END;
procedure download_excel( vsql in clob )
as
p_header clob;
p_footer clob;
p_content clob;
begin
owa_util.mime_header( 'application/octet', FALSE );
htp.p('Content-Disposition: attachment; filename="report.xls"');
owa_util.http_header_close;
excel_header( p_header);
excel_content(p_content,vsql);
excel_footer(p_footer);
dbms_output.put_line(p_header ||p_content|| p_footer);
HTP.PRN( p_header ||p_content|| p_footer);
htmldb_application.g_unrecoverable_error := true;
end;
procedure excel_content(p_content in out nocopy clob,
vsql in clob)
as
p_sql_stmt clob;
cur PLS_INTEGER := DBMS_SQL.OPEN_CURSOR;
cols DBMS_SQL.DESC_TAB;
ncols PLS_INTEGER;
TYPE varColumn IS TABLE OF varchar2(32000);
vtab varColumn;
v_column_count NUMBER DEFAULT 0;
v_status INTEGER;
BEGIN
htp.prn('am here');
/* SELECT region_source into p_sql_stmt
FROM apex_application_page_regions
WHERE region_id = p_region_id AND
page_id = p_page_id AND
application_id = p_app_id; */
get_usable_sql (vsql,p_sql_stmt);
p_content := p_sql_stmt;
-- Parse the query.
DBMS_SQL.PARSE(cur, p_sql_stmt , DBMS_SQL.NATIVE);
-- Retrieve column information
DBMS_SQL.DESCRIBE_COLUMNS (cur, ncols, cols);
-- Display each of the column names
p_content := '<table> <tr>';
FOR colind IN 1 .. ncols
LOOP
p_content := p_content || '<td>' || cols(colind).col_name || '</td>';
END LOOP;
p_content := p_content || '</tr>';
vtab := varColumn(null);
for i in 1..ncols
loop
vtab.extend;
DBMS_SQL.DEFINE_COLUMN (cur, i, vtab(i), 2000);
--dbms_output.put_line(vtab(i));
end loop;
v_status := DBMS_SQL.EXECUTE (cur);
LOOP
p_content := p_content || '<tr>';
EXIT WHEN (DBMS_SQL.FETCH_ROWS (cur) <= 0);
FOR i IN 1 ..ncols
loop
DBMS_SQL.COLUMN_VALUE (cur, i, vtab(i));
-- p_content := p_content || '<td>' || 'xyz' || '</td>';
p_content := p_content || '<td>' || vtab(i) || '</td>';
END LOOP;
p_content := p_content || '</tr>' ;
END LOOP;
p_content := p_content || '<table>' ;
DBMS_SQL.CLOSE_CURSOR (cur);
exception
when others then
p_content := '<td>Exception Error in printing data</td><table>' ;
DBMS_SQL.CLOSE_CURSOR (cur);
end;
procedure excel_footer( p_footer in out nocopy clob)
as
begin
p_footer := '</body></html>';
end;
PROCEDURE get_usable_sql (p_sql_in IN clob, p_sql_out OUT clob)
IS
v_sql clob;
v_names DBMS_SQL.varchar2_table;
v_pos NUMBER;
v_length NUMBER;
v_exit NUMBER;
BEGIN
v_sql := p_sql_in;
v_names := wwv_flow_utilities.get_binds (v_sql);
FOR i IN 1 .. v_names.COUNT
LOOP
<<do_it_again>>
v_pos := INSTR (LOWER (v_sql), LOWER (v_names (i)));
v_length := LENGTH (LOWER (v_names (i)));
v_sql :=
SUBSTR (v_sql, 1, v_pos - 1)
|| v_names (i)
|| SUBSTR (v_sql, v_pos + v_length);
v_sql :=
REPLACE (v_sql,
UPPER (v_names (i)),
'(SELECT v('''
|| LTRIM (v_names (i), ':')
|| ''') FROM DUAL)'
IF INSTR (LOWER (v_sql), LOWER (v_names (i))) > 0
THEN
GOTO do_it_again;
END IF;
END LOOP;
p_sql_out := v_sql;
END;
END export_pkg_spread_sheet;
After creating the package pass the parameter to package like this
begin
export_pkg_spread_sheet.download_excel('select * from emp');
end;
Package will allow to download the spread shreet. If i try to pass the a complex query to package it is returning error as mentioned below
ORA-06502: PL/SQL: numeric or value error
In the above package there is a procedure called procedure excel_content which actuall prints the data in the spread sheet this is where the error is coming from there is a variable called vsql have declared it as clob to hold large string but still i am getting the same error when trying to pass a big string.
Please check the error and let me know.
Thanks
SudhirHi Praveen,
This is the query i am using to pass
Declare
qry clob;
Begin
qry := ' 'SELECT
AR.REGION_CODE,
AR.DISTRICT_CODE,
AR.TERRITORY_CODE,
CASE
WHEN AR.REGION_NAME IS NOT NULL AND AR.DISTRICT_NAME IS NULL AND AR.TERRITORY_NAME IS NULL THEN
AR.REGION_NAME
WHEN AR.REGION_NAME IS NOT NULL AND AR.DISTRICT_NAME IS NOT NULL AND AR.TERRITORY_NAME IS NULL THEN
AR.DISTRICT_NAME
WHEN AR.REGION_NAME IS NOT NULL AND AR.DISTRICT_NAME IS NOT NULL AND AR.TERRITORY_NAME IS NOT NULL THEN
AR.TERRITORY_NAME
END TERR_NAME,
AR.EMPLOYEE_ID,
AR.LAST_NAME,
AR.FIRST_NAME,
AR.GENDER,
AR.DATE_OF_HIRE,
AR.PROJECT_EMPLOYEE_TITLE_ID,
AR.COMPANY_ID,
AR.CUSTOMER_EMAIL,
AR.BUSINESS_EMAIL,
AR.CUSTOMER_VOICEMAIL,
AR.CUSTOMER_VOICEMAIL_EXT,
AR.QUINTILES_VOICEMAIL,
AR.QUINTILES_VOICEMAIL_EXT , complete_roster_pkg_report.AR_F_ADDRESS_GET_LINE_1(AR.PROJECT_ID,AR.EMPLOYEE_ID,1 ,TO_DATE(AAH.EFFECTIVE_DATE)) "Shipping_ADDRESS_TYPE_1" , complete_roster_pkg_report.AR_F_ADDRESS_GET_LINE_2(AR.PROJECT_ID,AR.EMPLOYEE_ID,1 ,TO_DATE(AAH.EFFECTIVE_DATE)) "Shipping_ADDRESS_TYPE_2" , complete_roster_pkg_report.AR_F_ADDRESS_GET_PHONE(AR.PROJECT_ID,AR.EMPLOYEE_ID,1 ,TO_DATE(AAH.EFFECTIVE_DATE)) "Shipping_Phone" , complete_roster_pkg_report.AR_F_ADDRESS_GET_CITY_TOWN(AR.PROJECT_ID,AR.EMPLOYEE_ID,1 ,TO_DATE(AAH.EFFECTIVE_DATE)) "Shipping_City_Town" , complete_roster_pkg_report.AR_F_ADDRESS_GET_COUNTRY_NAME(AR.PROJECT_ID,AR.EMPLOYEE_ID,1 ,TO_DATE(AAH.EFFECTIVE_DATE)) "Shipping_Country_Name" , complete_roster_pkg_report.AR_F_ADDRESS_GET_STATE_NAME(AR.PROJECT_ID,AR.EMPLOYEE_ID,1 ,TO_DATE(AAH.EFFECTIVE_DATE)) "Shipping_State_Name" , complete_roster_pkg_report.AR_F_ADDRESS_GET_ZIP_POSTAL(AR.PROJECT_ID,AR.EMPLOYEE_ID,1 ,TO_DATE(AAH.EFFECTIVE_DATE)) "Shipping_ZipCode" , complete_roster_pkg_report.AR_F_ADDRESS_GET_LINE_1(AR.PROJECT_ID,AR.EMPLOYEE_ID,3 ,TO_DATE(AAH.EFFECTIVE_DATE)) "Storage_ADDRESS_TYPE_1" , complete_roster_pkg_report.AR_F_ADDRESS_GET_LINE_2(AR.PROJECT_ID,AR.EMPLOYEE_ID,3 ,TO_DATE(AAH.EFFECTIVE_DATE)) "Storage_ADDRESS_TYPE_2" , complete_roster_pkg_report.AR_F_ADDRESS_GET_PHONE(AR.PROJECT_ID,AR.EMPLOYEE_ID,3 ,TO_DATE(AAH.EFFECTIVE_DATE)) "Storage_Phone" , complete_roster_pkg_report.AR_F_ADDRESS_GET_CITY_TOWN(AR.PROJECT_ID,AR.EMPLOYEE_ID,3 ,TO_DATE(AAH.EFFECTIVE_DATE)) "Storage_City_Town" , complete_roster_pkg_report.AR_F_ADDRESS_GET_COUNTRY_NAME(AR.PROJECT_ID,AR.EMPLOYEE_ID,3 ,TO_DATE(AAH.EFFECTIVE_DATE)) "Storage_Country_Name" , complete_roster_pkg_report.AR_F_ADDRESS_GET_STATE_NAME(AR.PROJECT_ID,AR.EMPLOYEE_ID,3 ,TO_DATE(AAH.EFFECTIVE_DATE)) "Storage_State_Name" , complete_roster_pkg_report.AR_F_ADDRESS_GET_ZIP_POSTAL(AR.PROJECT_ID,AR.EMPLOYEE_ID,3 ,TO_DATE(AAH.EFFECTIVE_DATE)) "Storage_ZipCode" , complete_roster_pkg_report.AR_F_ADDRESS_GET_LINE_1(AR.PROJECT_ID,AR.EMPLOYEE_ID,4 ,TO_DATE(AAH.EFFECTIVE_DATE)) "Home_ADDRESS_TYPE_1" , complete_roster_pkg_report.AR_F_ADDRESS_GET_LINE_2(AR.PROJECT_ID,AR.EMPLOYEE_ID,4 ,TO_DATE(AAH.EFFECTIVE_DATE)) "Home_ADDRESS_TYPE_2" , complete_roster_pkg_report.AR_F_ADDRESS_GET_PHONE(AR.PROJECT_ID,AR.EMPLOYEE_ID,4 ,TO_DATE(AAH.EFFECTIVE_DATE)) "Home_Phone" , complete_roster_pkg_report.AR_F_ADDRESS_GET_CITY_TOWN(AR.PROJECT_ID,AR.EMPLOYEE_ID,4 ,TO_DATE(AAH.EFFECTIVE_DATE)) "Home_City_Town" , complete_roster_pkg_report.AR_F_ADDRESS_GET_COUNTRY_NAME(AR.PROJECT_ID,AR.EMPLOYEE_ID,4 ,TO_DATE(AAH.EFFECTIVE_DATE)) "Home_Country_Name" , complete_roster_pkg_report.AR_F_ADDRESS_GET_STATE_NAME(AR.PROJECT_ID,AR.EMPLOYEE_ID,4 ,TO_DATE(AAH.EFFECTIVE_DATE)) "Home_State_Name" , complete_roster_pkg_report.AR_F_ADDRESS_GET_ZIP_POSTAL(AR.PROJECT_ID,AR.EMPLOYEE_ID,4 ,TO_DATE(AAH.EFFECTIVE_DATE)) "Home_ZipCode" FROM AR_V_ROSTER AR
LEFT JOIN AR_V_ADDRESS_HISTORY AAH
ON
(AR.PROJECT_ID = AAH.PROJECT_ID AND
AR.EMPLOYEE_ID = AAH.EMPLOYEE_ID)
WHERE
UPPER(AR.USER_EMPLOYEE_ID) = ''Q766730'' AND
AR.PROJECT_ID = 81 ';
export_pkg_spread_sheet.download_excel(qry);
End;
Praveen you can pass your DB table query to check the error. I am trying to pass as mentioned above.
Please let me know if my question is not clear.
Thanks
Sudhir -
ORA-06502: PL/SQL: numeric or value error While Exporting in Oracle 10g
Connected to: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options
Export done in AR8MSWIN1256 character set and AL16UTF16 NCHAR character set
server uses AR8ISO8859P6 character set (possible charset conversion)
About to export the entire database ...
. exporting tablespace definitions
. exporting profiles
. exporting user definitions
. exporting roles
. exporting resource costs
. exporting rollback segment definitions
. exporting database links
. exporting sequence numbers
. exporting directory aliases
. exporting context namespaces
. exporting foreign function library names
. exporting PUBLIC type synonyms
. exporting private type synonyms
. exporting object type definitions
. exporting system procedural objects and actions
. exporting pre-schema procedural objects and actions
. exporting cluster definitions
. about to export SYSTEM's tables via Conventional Path ...
. . exporting table DEF$_AQCALL 0 rows exported
. . exporting table SRC_RQST_SEQ 1 rows exported
EXP-00091: Exporting questionable statistics.
. . exporting table SRC_USERS 6 rows exported
EXP-00091: Exporting questionable statistics.
. . exporting table SRC_YEAR_LOOKUP 40 rows exported
EXP-00091: Exporting questionable statistics.
. . exporting table TENDER_DETAIL_TABLE 36 rows exported
EXP-00091: Exporting questionable statistics.
. . exporting table TENDER_MASTER_TABLE 34 rows exported
EXP-00091: Exporting questionable statistics.
. . exporting table TENDER_NEW_DETAIL_TABLE 4 rows exported
EXP-00091: Exporting questionable statistics.
. exporting synonyms
. exporting views
EXP-00056: ORACLE error 6502 encountered
ORA-06502: PL/SQL: numeric or value error
LPX-00210: expected '<' instead of 'n'
ORA-06512: at "SYS.UTL_XML", line 152
ORA-06512: at "SYS.DBMS_METADATA_INT", line 7195
ORA-06512: at "SYS.DBMS_METADATA_INT", line 9135
ORA-06512: at "SYS.DBMS_METADATA", line 1882
ORA-06512: at "SYS.DBMS_METADATA", line 3707
ORA-06512: at "SYS.DBMS_METADATA", line 3689
ORA-06512: at line 1
EXP-00056: ORACLE error 6502 encountered
ORA-06502: PL/SQL: numeric or value error
LPX-00210: expected '<' instead of 'n'
ORA-06512: at "SYS.UTL_XML", line 152
ORA-06512: at "SYS.DBMS_METADATA_INT", line 7195
ORA-06512: at "SYS.DBMS_METADATA_INT", line 9135
ORA-06512: at "SYS.DBMS_METADATA", line 1882
ORA-06512: at "SYS.DBMS_METADATA", line 3707
ORA-06512: at "SYS.DBMS_METADATA", line 3689
ORA-06512: at line 1
EXP-00000: Export terminated unsuccessfully
Plz reply me the appropriate Solution
Edited by: user8920919 on May 3, 2010 12:27 AMhi,
EXP-00091: Exporting questionable statistics The client character set(NLS_LANG) does not match the server character;
select parameter,value from nls_database_parameters where parameter like '%CHARACTERSET%';
and check the client system character set
- Pavan Kumar N
- ORACLE OCP - 9i/10g
https://www.oracleinternals.blogspot.com -
Problem using default value of report parameter 1 to validate parameter 2 passed in to report
I am having a problem with an SSRS report using the default value of report parameter 1 to validate parameter 2 passed in to report (via C#) instead of using the value of parameter 1 that is also passed into the report. Here are the
simplified details:
Using SSDT, SQL Server 2008 R2
SSRS report has 2 parameters:
P1 -- text, hidden, default value 'R1', ... front-end C# code can pass 'R2' or 'R1'
P2 -- text, allows multiple values, list of available values provided by stored procedure (sproc_list) that takes P1 value as a parameter. Hence, sproc_list either provides a list for P1 = 'R1' or P1 = 'R2'.
List for P1 = 'R1' is 'A', 'B', 'C'
List for P1 = 'R2' is 'A', 'B', 'D'
Values for P1 and P2 can be passed in via C# to the report.
The C# front-end displays 2 report choices to the user, R1 and R2, where both choices call the same RDL; but choice R1 passes in 'R1' for P1, and the choice R2 passes in 'R2' for P1.
Upon a users 1st time use of the report no parameters are passed in. Then when the user exits the report, the parameter value for P2 that was chosen is saved off to a file for R1 or R2, and used the next time the user selects the report.
Everything always works fine for report R1 since the default value for P1 is 'R1'.
When R2 is chosen and the user selects 'D' as the value for P2, runs the report, then exits, the P2 value of 'D' for R2 is saved to a file. When the user returns the next day to run report R2, 'R2' is passed for P1, and 'D' is passed for P2.
This is when the problem occurs. The value of 'D' for P2 is validated against a list generated for P2 based on the default value of 'R1' for parameter P1. Hence, SSRS considers 'D' an invalid value for P2 and blanks out the P2 parameter.
The user can then use the drop down list for P2 and choose 'D', but this defeats the purpose of saving the parameter values to be used the next time.
Why is the stored procedure that provides a list of available values for parameter P2 using the default value of 'R1' for parameter P1 instead of using the value of 'R2' passed into the report for parameter P1?Hi Tom,
Sorry for my delay.
If I understand correctly, you have two parameter in your report. It is a couple of cascading parameter. If we have choose ‘R1’ of P1, the P2 values is A, B, C. ‘R2’ of P1, corresponding P2 values is A, B, D. What your requirement is to save the end use
select option of these two parameters.
In SSRS, if we have configure the parameter with default value. When we run the report, the parameter will fill with the default value to filter data. If we want to save the last status we are render the report, we need to update the default value of P1.
If we are query the default value from database, if possible, we can
update the database try to resolve the issue. Alternatively, we can set the dynamic default value for the parameter.
Hope this helps.
Regards,
Alisa Tang
Alisa Tang
TechNet Community Support -
Insert multiple checkbox values
Hello,
I have a basic form with a number of areas that have multiple choice checkboxes. Checkboxes , meaning that one or 3 or none can be selected and they all share the same id/name but of course have differing values.
I can not find anywhere in the ADDT that allows me to select the checkbox name when I do my insert. I want all the values of each individual checkbox name to be inserted into their respective fields.
In the Insert transaction wizard I get three types of checkbox values (Yes or No, 1 or 0, or -1 or 0.
None of those seem to relate to the common occurance of checkboxes with string values, all to be inserting into one specific table field.
Is it possible or do I need to write some hand code to insert an array?
Thanks in advance for any help rendered,
SteveEeeeee.... Now that's an interesting widget.. You create a text field, but then need to create tables in your DB to pull the data to populate the checkbox fields that magically show up from the text field when rendered by the server.. Very interesting. Seems mine have formatting issues:
http://www.peninsulaequipment.com/phoneAddy.php
Only the "Screening Media" checkboxes are dynamically generated but for some reason they do not render left justified like the example shown here:
http://help.adobe.com/en_US/Dreamweaver/9.0_ADDT/help.html?content=ch5_form_controls_33.ht ml#1028650
Are there workarounds for the formatting problem or known reasons why it does not look like the example?
Maybe you are looking for
-
How do I manually fetch synchronised calendar data?
In my Mail, Contacts, Calendars Settings, under Fetch New Data > Advanced, I have some synchronised calendars set to Fetch, and my setting in Fetch New Data is Manually. I have a similar setting for a mail account (in the same list on the Advanced pa
-
How to use OCR Font A type by the time of writing some text into Pdf fil
Hi, I am generating one pdf file in java. How can I use OCR Font A for text of pdf file ..Please can any one help where can I get OCR Font A and how to use that one in java ... I want to write some text into pdf file and that text should use OCR Font
-
Hi, I am looking for an app that will work on an Iphone 4 and iPhone 3GS. I am running a marathon in October and would like to have my wife meet me in a few spots on the course, is there an app that will show her where I am at without having to stop
-
"iTunes cannot be found or created" all of a sudden
Please help- I recently installed OSX Leopard without any problems. That was until iTunes started playing up- it says "the folder itunes cannot be found or created, and is required...." The itunes folder is in the correct place in the "music" folder-
-
Month end accural and Year end accural processings.
Hi Experts, Can you please give me an idea about month end accural and year end accural proecess in payroll?? What are the responsibilities of functional consultants in accural processing?? Thanks, Kanna.