Overloading (Signature/Number of Arguments)
Hi friends,
I am relatively new to java.
I have written this program -
1 /*
2 * Xtemp.java
3 * Created on January 21, 2002.
4 */
5 class material{
6 public void item(int abc){
7 abc = abc * abc;
8 System.out.println(abc);
9 }
10 }
11 class order extends material {
12 public void item(float abc
13 ,int kk
14 ) {
15 abc = abc * abc * abc;
16 System.out.println(abc);
17 }
18 }
19 public class Xtemp {
20 public static void main(String[] args) {
21 int k = 3;
22 material material2 = new material();
23 material2.item(2);
24 order order2 = new order();
25 order2.item(2.2f
26 ,k
27 );
28 order2.item(k);
29 }
30 }
Now this is a simple case of overloading in which the method "item " from class "material" has been overloaded in class "order" which is a subclass of "material".
And this program in itself works fine.
But if we comment-out the line number 13 and (hence) line no 26 also then this program gives error. This should not happen idealy......because the method "item" in class "order" differs from the method "item" in class "material" in that they have different types of arguments. But it gives ambiguity error.
And if the line nos 13 and 26 are included in program then the number of arguments to these methods differ.
So my question is -
Does java go after the number of arguments rather than type of arguments ????? (Whenever there is an ambiguity !!!!!!! )
[email protected]
Dude,
Consider the following example:
public class Foo {
private int i;
public Foo (int parm) {
i = parm;
public int getI() {
return i;
public void setI (int parm) {
i = parm;
public void Baz (float j) {
System.out.println ("In Foo's Baz (with float parm " + j + ")");
public class Bar extends Foo {
public Bar (int parm) {
super(parm);
public void Baz (int j) {
System.out.println ("In Bar's Baz (with int parm " + j + ")");
public class woo {
public static void main (String [] args) {
Foo f = new Foo (2);
Bar b = new Bar (3);
b.Baz((int)1);
f.Baz(2.2f);
b.Baz((float) 1);
}Running this example, I get:
In Bar's Baz (with int parm 1)
In Foo's Baz (with float parm 2.2)
In Foo's Baz (with float parm 1.0)
This is the behavior you want, right?
Larry
Similar Messages
-
Overload resolution failed because no accessible "New" accepts this number of arguments.
HI
Just need a little help figuring this error out. The New Font is giving me trouble. Overload resolution failed because no accessible "New" accepts this number of arguments. I don't know what I'm doing wrong here. Any help would
be greatly appreciated.
PrivateSubmnuPrint_Click(sender
AsObject,
e AsPaintEventArgs)
HandlesmnuPrint.Click
DiminputFile
AsStreamReader
'Object variable
DimintX
AsInteger=
10 'X coordinate for printing
DimintY
AsInteger=
10 'Y coordinate for printing
Try
'Open the file
inputFile =
File.OpenText("dataFile.txt")
'Read all the lines in the file
DoWhileNotinputFile.EndOfStream
'print a line from the file
e.Graphics.DrawString(inputFile.ReadLine(),
NewFont,
CSng(("Courier")),
10, FontStyle.Regular,
Brushes.Black, intX, intY)
'Add 12 to intY
intY += 1
Loop
'Close the file
Catchex
AsException
'Error message for file open error
MessageBox.Show("Error:
Could not open file.")
EndTry
EndSub
Thanks in Advance!Elise,
Please modify your post and this time around, instead of showing the code as text, click the button in the header that has a "<>" in it to use the Code Block tool. Select VB from the combo, the paste your code there, then finally post it
here. It'll be a lot easier to read that way. :)
Also though, please indicate which line is showing the compile error.
Do you have Option Strict set to On? You should if not.
Still lost in code, just at a little higher level. -
Variable number of arguments in procedure PL/SQL
Hello everyone,
I have a "simple" question : can a procedure PL/SQL take a variable number of arguments ?
In my case, the procedure is called by the submit button of a form, and the form has variable number of inputs...
Thanks you !862447 wrote:
I have a "simple" question : can a procedure PL/SQL take a variable number of arguments ?No. Not in the style of Pascal and C/C++. E.g. int printf( char * format, … ) in C using va_list.
In my case, the procedure is called by the submit button of a form, and the form has variable number of inputs...There are a couple of merhods.
Code a fixed number of parameters in the procedure signature. Assign defaults to these. The caller can now select which parameters from the fixed list to use and which not.
Create a structure. For example, having a 100 parameters in a signature is something I will call plain stupidity. This creates usability issues, maintenance issues and even performance issues. And debugging will be a nightmare. So instead create a structure (aka record in the PL/SQL language or an object using the SQL language) - where this structure describes (in a structured and logical way) the list of parameters.
Neither of these method however allows the caller to pass a variable number parameters - the parameter signature is fixed. It has a fixed number of defined parameters.
So the only way to simulate a variable parameter signature is to use a collection. The collection itself is of course a single parameter passed. But it can have 0 elements. It can have a 1000 elements. And similar to a va_list in C/C++, the procedure can iterate through the data passed via the parameter by the caller.
Simple example:
//-- define the collection type, e.g. a collection of strings
create or replace type TStrings is table of varchar2(4000);The procedure's signature:
--// passing by referencing and not value should be considered
create or replace procedure FooProc( param TStrings ) is ..And to call this procedure with variable parameters:
--// calling it with 2 param value
FooProc( TString('123','testing') );
--// calling it with 5 param values
FooProc( TString('p1','p2','p3','p4','p5') ); -
Error: Wrong number of arguments in method
Hi all,
I keep getting the above mentioned error when compiling simple JSPs with
only a few lines of codes. Here are the log dump.
Mon Aug 07 20:02:30 GMT+08:00 2000:<I> <ServletContext-General> file: init
Mon Aug 07 20:02:30 GMT+08:00 2000:<E> <ServletContext-General> Cannot find
resource 'language.html' in document root 'C:\weblogic\myserver\public_html'
Mon Aug 07 20:02:30 GMT+08:00 2000:<E> <ServletContext-General> Cannot find
resource 'top.html' in document root 'C:\weblogic\myserver\public_html'
Mon Aug 07 20:02:30 GMT+08:00 2000:<E> <ServletContext-General> Cannot find
resource 'language.html' in document root 'C:\weblogic\myserver\public_html'
Mon Aug 07 20:02:54 GMT+08:00 2000:<I> <ServletContext-General> *.jsp: init
Mon Aug 07 20:02:54 GMT+08:00 2000:<I> <ServletContext-General> *.jsp: param
verbose initialized to: true
Mon Aug 07 20:02:54 GMT+08:00 2000:<I> <ServletContext-General> *.jsp: param
packagePrefix initialized to: jsp
Mon Aug 07 20:02:54 GMT+08:00 2000:<I> <ServletContext-General> *.jsp: param
compileCommand initialized to: C:/jdk1.2.2/bin/javac.exe
Mon Aug 07 20:02:54 GMT+08:00 2000:<I> <ServletContext-General> *.jsp: param
srcCompiler initialized to weblogic.jspc
Mon Aug 07 20:02:54 GMT+08:00 2000:<I> <ServletContext-General> *.jsp: param
superclass initialized to null
Mon Aug 07 20:02:54 GMT+08:00 2000:<I> <ServletContext-General> *.jsp: param
workingDir initialized to: C:\weblogic\myserver\classfiles
Mon Aug 07 20:02:55 GMT+08:00 2000:<I> <ServletContext-General> *.jsp: param
pageCheckSeconds initialized to: 1
Mon Aug 07 20:02:55 GMT+08:00 2000:<I> <ServletContext-General> *.jsp:
initialization complete
Mon Aug 07 20:02:55 GMT+08:00 2000:<I> <ServletContext-General> Generated
java file: C:\weblogic\myserver\classfiles\jsp\helloworld.java
Mon Aug 07 20:02:59 GMT+08:00 2000:<E> <ServletContext-General> Compilation
of C:\weblogic\myserver\classfiles\jsp\helloworld.java failed:
C:\weblogic\myserver\classfiles\jsp\helloworld.java:54: Wrong number of
arguments in method.
if (sci.isResourceStale("/helloworld.jsp", 933320916000L, "5.1.0
Service Pack 4 06/29/2000 18:18:23 #74560")) return true;
^
C:\weblogic\myserver\classfiles\jsp\helloworld.java:55: Wrong number of
arguments in method.
if (sci.isResourceStale("/dukebanner.html", 933321078000L, "5.1.0
Service Pack 4 06/29/2000 18:18:23 #74560")) return true;
^
2 errors
java.io.IOException: Compiler failed
executable.exec([Ljava.lang.String;[C:/jdk1.2.2/bin/javac.exe, -classpath,
c:\weblogic\lib\weblogic510sp4boot.jar;c:\weblogic\myserver\User.jar;c:\webl
ogic\myserver\Person.jar;c:\weblogic\myserver\TradingAccount.jar;c:\weblogic
\myserver\uniquesequence.jar;c:\weblogic\myserver\stockbroker.jar;;C:\jdk1.2
.2\jre\lib\rt.jar;C:\jdk1.2.2\jre\lib\i18n.jar;C:\weblogic\classes\boot;C:\w
eblogic\eval\cloudscape\lib\cloudscape.jar;c:\weblogic\lib\weblogic510sp4.ja
r;c:\weblogic\license;c:\weblogic\classes;c:\weblogic\myserver\serverclasses
;c:\weblogic\lib\weblogicaux.jar;C:\weblogic\myserver\tmp_deployments\ejbjar
-10126.jar;C:\weblogic\lib\persistence\WebLogic_RDBMS.jar;C:\weblogic\myserv
er\tmp_deployments\ejbjar-10125.jar;C:\weblogic\myserver\tmp_deployments\ejb
jar-10124.jar;C:\weblogic\myserver\tmp_deployments\ejbjar-10123.jar;C:\weblo
gic\myserver\tmp_deployments\ejbjar-10122.jar;C:\weblogic\myserver\tmp_deplo
yments\ejbjar-10121.jar;C:\weblogic\myserver\servletclasses;C:\weblogic\myse
rver\classfiles, -d, C:\weblogic\myserver\classfiles,
C:\weblogic\myserver\classfiles\jsp\helloworld.java])
at
weblogic.utils.compiler.CompilerInvoker.compileMaybeExit(CompilerInvoker.jav
a, Compiled Code)
at
weblogic.utils.compiler.CompilerInvoker.compile(CompilerInvoker.java:200)
at weblogic.servlet.jsp.JspStub.compilePage(JspStub.java, Compiled Code)
at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:173)
at
weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.java:18
7)
at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
:118)
at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
:142)
at
weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletContextImp
l.java:744)
at
weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletContextImp
l.java:692)
at
weblogic.servlet.internal.ServletContextManager.invokeServlet(ServletContext
Manager.java:251)
at
weblogic.socket.MuxableSocketHTTP.invokeServlet(MuxableSocketHTTP.java:363)
at weblogic.socket.MuxableSocketHTTP.execute(MuxableSocketHTTP.java:263)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java, Compiled Code)
Mon Aug 07 20:02:59 GMT+08:00 2000:<E> <ServletContext-General> Servlet
failed with Exception
java.io.IOException: Compiler failed
executable.exec([Ljava.lang.String;[C:/jdk1.2.2/bin/javac.exe, -classpath,
c:\weblogic\lib\weblogic510sp4boot.jar;c:\weblogic\myserver\User.jar;c:\webl
ogic\myserver\Person.jar;c:\weblogic\myserver\TradingAccount.jar;c:\weblogic
\myserver\uniquesequence.jar;c:\weblogic\myserver\stockbroker.jar;;C:\jdk1.2
.2\jre\lib\rt.jar;C:\jdk1.2.2\jre\lib\i18n.jar;C:\weblogic\classes\boot;C:\w
eblogic\eval\cloudscape\lib\cloudscape.jar;c:\weblogic\lib\weblogic510sp4.ja
r;c:\weblogic\license;c:\weblogic\classes;c:\weblogic\myserver\serverclasses
;c:\weblogic\lib\weblogicaux.jar;C:\weblogic\myserver\tmp_deployments\ejbjar
-10126.jar;C:\weblogic\lib\persistence\WebLogic_RDBMS.jar;C:\weblogic\myserv
er\tmp_deployments\ejbjar-10125.jar;C:\weblogic\myserver\tmp_deployments\ejb
jar-10124.jar;C:\weblogic\myserver\tmp_deployments\ejbjar-10123.jar;C:\weblo
gic\myserver\tmp_deployments\ejbjar-10122.jar;C:\weblogic\myserver\tmp_deplo
yments\ejbjar-10121.jar;C:\weblogic\myserver\servletclasses;C:\weblogic\myse
rver\classfiles, -d, C:\weblogic\myserver\classfiles,
C:\weblogic\myserver\classfiles\jsp\helloworld.java])
at
weblogic.utils.compiler.CompilerInvoker.compileMaybeExit(CompilerInvoker.jav
a, Compiled Code)
at
weblogic.utils.compiler.CompilerInvoker.compile(CompilerInvoker.java:200)
at weblogic.servlet.jsp.JspStub.compilePage(JspStub.java, Compiled Code)
at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:173)
at
weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.java:18
7)
at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
:118)
at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
:142)
at
weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletContextImp
l.java:744)
at
weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletContextImp
l.java:692)
at
weblogic.servlet.internal.ServletContextManager.invokeServlet(ServletContext
Manager.java:251)
at
weblogic.socket.MuxableSocketHTTP.invokeServlet(MuxableSocketHTTP.java:363)
at weblogic.socket.MuxableSocketHTTP.execute(MuxableSocketHTTP.java:263)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java, Compiled Code)
I believe that it has got something to do with the configuration of the
server and not the code in the JSPs. Have anyone encountered this error
before? Pls advice thanx!
Cheers,
kianhui
double d[] = new double[300];
getMax(d);Pass the array, not an element in the array. -
Errror::Illegal number of arguments or types of arguments in XSLT
HI All,
In our scenario we are using XSLT mapping with java enhancement.Its working fine in Stylus studio but when the same is imported into XI its throwing the below mentioned error:
javax.xml.transform.TransformerException: com.sap.engine.lib.xml.util.NestedException: Illegal number of arguments or types of arguments in a call of function 'Trans:Convert'.
Our requirement is that we are summing up the Field "Grant_Amount" which occurs multiple times in the source structure.PFB the XSL and the source XML:
<
XSL:
===
<Sum>
<xsl:value-of select="Trans:Convert(//Grant_Amount)"/>
</Sum>
XML:
===
<Recordset>
<DETAILRECORD>
<Grant_Amount>$100.00</Grant_Amount>
</DETAILRECORD>
<DETAILRECORD>
<Grant_Amount>$200.00</Grant_Amount>
</DETAILRECORD>
</Recordset>
Java Code:
========
package com.company.group;
public class String2Number
public static String Convert(String[] a)
double sum=0;
String[] temp = new String[100];
for(int i=0;i<a.length;i++)
temp<i> = (a<i>).replaceAll("[,
$
sum=sum+Double.parseDouble(temp<i>);
return sum+"";
>
Please guide me into the right solution.
Thanks and Regards,
KaranamThanq for your response,
But my stylesheet is as below
<
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:a="http://www.infosys.com/sap/xi/projects/sce/n1" xmlns:Trans="com.company.group.String2Number">
<xsl:template match="/">
<a:MT_TargetXSLJava>
<Record>
<Detailrecord>
<Sum>
<xsl:value-of select="Trans:Convert(//Grant_Amount)"/>
</Sum>
<Flag>
<xsl:value-of select="//DETAILRECORD/Grant_Amount"/>
</Flag>
</Detailrecord>
</Record>
</a:MT_TargetXSLJava>
</xsl:template>
</xsl:stylesheet>
> -
Error: Illegal number of arguments passsed to the function call
HI All,
In our scenario we are using XSLT mapping with java enhancement.Its working fine in Stylus studio but when the same is imported into XI its throwing the below mentioned error:
javax.xml.transform.TransformerException: com.sap.engine.lib.xml.util.NestedException: Illegal number of arguments or types of arguments in a call of function 'Trans:Convert'.
Our requirement is that we are summing up the field "Grant_Amount" which occurs multiple times in the source structure and the sum is mapped to the field "Sum' on the target side.The stylesheet is working fine in stylus studio but whe imported into XI the above mentioned error is being thrown.Can any one one please help me solving this issue.
The XSL, the source XMLand the java class are mentioned below:
<
XSL:
===
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:a="http://www.infosys.com/sap/xi/projects/sce/n1" xmlns:Trans="com.company.group.String2Number">
<xsl:template match="/">
<a:MT_TargetXSLJava>
<Record>
<Detailrecord>
<Sum>
<xsl:value-of select="Trans:Convert(//Grant_Amount)"/>
</Sum>
<Flag>
<xsl:text>1</xsl:text>
</Flag>
</Detailrecord>
</Record>
</a:MT_TargetXSLJava>
</xsl:template>
</xsl:stylesheet>
XML:
===
<?xml version="1.0" encoding="UTF-8"?>
<ns0:MT_SourceXSLJava xmlns:ns0="http://www.infosys.com/sap/xi/projects/sce/n1">
<Recordset>
<DETAILRECORD>
<Grant_Amount>$100.00</Grant_Amount>
</DETAILRECORD>
<DETAILRECORD>
<Grant_Amount>$200.00</Grant_Amount>
</DETAILRECORD>
<summary_record>
<Total>$300.00</Total>
</summary_record>
</Recordset>
</ns0:MT_SourceXSLJava>
Java Code:
========
package com.company.group;
public class String2Number
public static double Convert(String[] a)
double sum=0;
String[] temp = new String100;
for(int i=0;i<a.length;i++)
temp = (a).replaceAll(",
$
sum=sum+Double.parseDouble(temp);
return sum;
Please guide me to the right solution.
Thanks and Regards,
KaranamIf you are using below mentioned java code for Convert method, then see you are passing a String Array, but in below statement:
<xsl:value-of select="Trans:Convert(//Grant_Amount)"/>
This is just a single value i think, you have to pass an array with values 100,200,300. Pls check it.
BR,
Alok -
Wron number of arguments error on URLEncoder.encode(language,
the following is the code which is an example in The complete Reference JSP
I ran this in tomcat
it shows an error which is showed down this code.The place where error occuring is underlined in the code
<%@ page session="false"
import="java.io.*,
java.net.*,
java.util.*" %>
<html>
<head>
<title>Using Cookies to Store Preferences</title>
<style><%= STYLESHEET %></style>
</head>
<body>
<table border="0" cellspacing="3" width="500">
<%-- Company logo --%>
<tr><td>
<img src="images/lyric_note.png">
</td></tr>
<%-- Language preference bar --%>
<tr><td class="LB">
<%= getLanguageBar(request) %>
</td></tr>
</table>
<%-- Localized greeting --%>
<h1><%= getGreeting(request) %></h1>
<%-- Store language preference in a persistent cookie --%>
<% storeLanguagePreferenceCookie(request, response); %>
</body>
</html>
<%!
// ===========================================
// Helper methods included here for
// clarity. A better choice would be
// to put them in beans or a servlet.
// ===========================================
* The CSS stylesheet
private static final String STYLESHEET =
"h1 { font-size: 130%; }\n"
+ ".LB {\n"
+ " background-color: #005A9C;\n"
+ " color: #FFFFFF;\n"
+ " font-size: 90%;\n"
+ " font-weight: bold;\n"
+ " padding: 0.5em;\n"
+ " text-align: right;\n"
+ " word-spacing: 1em;\n"
+ "}\n"
+ ".LB a:link, .LB a:active, .LB a:visited {\n"
+ " text-decoration: none;\n"
+ " color: #FFFFFF;\n"
+ "}\n";
* Creates the language preference bar
private String getLanguageBar
(HttpServletRequest request)
throws IOException
String thisURL = request.getRequestURL().toString();
StringBuffer sb = new StringBuffer();
appendLink(sb, thisURL, Locale.ENGLISH);
appendLink(sb, thisURL, Locale.GERMAN);
appendLink(sb, thisURL, Locale.FRENCH);
appendLink(sb, thisURL, Locale.ITALIAN);
String languageBar = sb.toString();
return languageBar;
* Helper method to create hyperlinks
private void appendLink
(StringBuffer sb, String thisURL, Locale locale)
throws UnsupportedEncodingException
if (sb.length() > 0)
sb.append(" ");
String language = locale.getLanguage();
sb.append("<a href=\"");
sb.append(thisURL);
sb.append("?language=");
sb.append(URLEncoder.encode(language, "UTF-8")); sb.append("\">");
sb.append(locale.getDisplayName(locale));
sb.append("</a>\n");
* Gets the greeting message appropriate for
* this locale
private String getGreeting
(HttpServletRequest request)
Locale locale = getLocaleFromCookie(request);
ResourceBundle RB = ResourceBundle.getBundle
("com.jspcr.sessions.welcome", locale);
String greeting = RB.getString("greeting");
return greeting;
* Determines the locale to use, in the following
* order of preference:
* 1. Language parameter passed with request
* 2. Language cookie previously stored
* 3. Default locale for client
* 4. Default locale for server
private Locale getLocaleFromCookie
(HttpServletRequest request)
Locale locale = null;
String language = request.getParameter("language");
if (language != null)
locale = new Locale(language);
else {
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
Cookie cookie = cookies;
String name = cookie.getName();
if (name.equals("language")) {
language = cookie.getValue();
locale = new Locale(language);
break;
if (locale == null)
locale = request.getLocale();
return locale;
* Stores the language preference
* in a persistent cookie
private void storeLanguagePreferenceCookie
(HttpServletRequest request, HttpServletResponse response)
Locale locale = getLocaleFromCookie(request);
String name = "language";
String value = locale.getLanguage();
Cookie cookie = new Cookie(name, value);
final int ONE_YEAR = 60 * 60 * 24 * 365;
cookie.setMaxAge(ONE_YEAR);
response.addCookie(cookie);
%>
org.apache.jasper.JasperException: Unable to compile class for JSP
An error occured between lines: 45 and 173 in the jsp file: /chap08/examples/cookies/CookieBasedWelcome.jsp
Generated servlet error:
C:\tomcat\jakarta-tomcat-4.0\work\localhost\_\chap08\examples\cookies\CookieBasedWelcome$jsp.java:75: Wrong number of arguments in method.
sb.append(URLEncoder.encode(language, "UTF-8"));
^
An error occured between lines: 45 and 173 in the jsp file: /chap08/examples/cookies/CookieBasedWelcome.jsp
Generated servlet error:
C:\tomcat\jakarta-tomcat-4.0\work\localhost\_\chap08\examples\cookies\CookieBasedWelcome$jsp.java:110: Wrong number of arguments in constructor.
locale = new Locale(language);
^
An error occured between lines: 45 and 173 in the jsp file: /chap08/examples/cookies/CookieBasedWelcome.jsp
Generated servlet error:
C:\tomcat\jakarta-tomcat-4.0\work\localhost\_\chap08\examples\cookies\CookieBasedWelcome$jsp.java:119: Wrong number of arguments in constructor.
locale = new Locale(language);
^
3 errors
But i have even checked the syntax of encode at which is exactly matching
http://java.sun.com/j2se/1.4.2/docs/api/java/net/URLEncoder.html
Kindly let me know what is the reason.......Check the Java API for this:
There is a specific note for the method, which reads as follows:
Note: The World Wide Web Consortium Recommendation states that UTF-8 should be used. Not doing so may introduce incompatibilites.
It's always better to look in API docs.
Annie. -
Passing variable number of arguments in a stored procedure
Hi Team,
i am facing a problem. I have a dynamic form which contains some checkboxes. The number of checkboxes are dynamically generated on querying the database. On the form submission i want to call a stored procedure that will update the values in the database. i want to know that is there any way to handle variable number of arguments in the stored procedure or can i get the variables through some session context and use it in my stored procedure.
Any help is greatly appreciated.
Thanks&Regards
Saurabh JainHi Saurabh,
The method in which stored procedures are called on form submit is something as follows.
Let us take your scenario of a form which has multiple checkboxes and a submit button. On clicking the submit button, this form data is submitted using either get or post. The form's submit action invokes a procedure.
The HTML form code will look something like this..
htp.formOpen( curl => 'URL /myProcedure',
cmethod => 'post' );
htp.formCheckbox( cname => 'myCheckbox'
cvalue => 'A');
htp.formCheckbox( cname => 'myCheckbox'
cvalue => 'B');
htp.formCheckbox( cname => 'myCheckbox'
cvalue => 'C');
htp.formSubmit( cname => 'myButton',
cvalue => 'OK');
Now, whenever the submit button is clicked, all these form values are passed to our stored procedure 'myProcedure'.
"myProcedure" looks something like this.
procedure myProcedure
myCheckbox IN sys.owa_util.vc_arr,
myButton IN VARCHAR2
is
begin
end myProcedure;
The point to be noted here is that the name of the variable being passed in the procedure is the same as the name of the HTML element being created in the HTML form. So, there is a direct mapping between the elements in the HTML form and the procedure parameters.
Another noteworthy point is that since you have multiple checkboxes in your HTML form, it is impractical to name all the checkboxes differently and then pass those many parameters to your procedure (Imagine a scenario where there are a hundred check-boxes in an HTML form!). So portal allows you to give the same name (cname) to all the checkboxes in your HTML form, and if multiple checkboxes are checked, it will return all the checkbox values in an array (Note the usage of "myCheckbox IN sys.owa_util.vc_arr" in myProcedure).
You can check out this link for more information.
Re: retrieving data from fields
Thanks,
Ashish. -
Variable number of arguments in C functions
Hello. I know how to achieve creating a function that accepts a variable number of arguments. For example:
#include <stdio.h>
#include <stdarg.h>
int add (int x, ...);
int main (int argc, const char * argv[])
int result = add(3, 5, 3, 7);
printf("%d", result);
return 0;
int add (int x, ...)
va_list argList;
va_start(argList, x);
int sum = 0;
int i;
for (i = 0; i < x; ++i)
sum += va_arg(argList, int);
va_end(argList);
return sum;
The first argument, x, is sent to the function and represents how many additional optional arguments will be sent to the function (3 in the above example). Then, the definition of the add function totals those remaining (3) arguments, returning a value of (in this case) 15, which main then prints to the console. Simple enough, but here's my question:
What if I want to achieve this same optional arguments concept without having to send the function the number of optional arguments it will be accepting. For example, the printf() function takes an optional number of arguments, and nowhere there do you have to specify an extra argument that represents the number of additional optional arguments being passed (unless maybe the number of formatting specifiers in the first argument determines this number). Can this be done? Does anyone have any input here? Thanks in advance.Hi Tron -
I looked over my first response again, and it needs to be corrected. Fortunately Bob and Hansz straightened everything out nicely, but I still need to fix my post:
RayNewbie wrote:
Yes, the macros are designed to walk a list of args when neither the number of args or their type is known.
The above should have said. "The macros are designed to walk a list of args when neither the number of args or their type is known _at compile time_".
If I may both paraphrase and focus your original question, I think you wanted to know if there was any way the function could run without knowing the number of args to expect. The answer to this question is "No". In fact at runtime, the function must know both the number of args and the type of each.
Tron55555 wrote:
... the printf() function takes an optional number of arguments, and nowhere there do you have to specify an extra argument that represents the number of additional optional arguments being passed (unless maybe the number of formatting specifiers in the first argument determines this number).
As both Bob and Hansz have explained, the underlined statement is correct. Similarly, the example from the manual gives the number and types of the args in the first string arg.
Hansz also included an alternative to an explicit count or format string, which is to terminate the arg list with some pre-specified value (this is sometimes called a "sentinel" value. However when using a sentinel, the called function must know the data types. For example, you could never simply terminate the args with a sentinel and then pass a double followed by an int. The combined length of these args is 8 + 4 => 12 bytes, so unless the function knew which type was first at compile time, it wouldn't be possible to determine whether the list was 4+8 or 8+4 at runtime.
If you're interested in knowing why a variable arg function is limited in this way, or in fact how any C function finds its args, its parameters, and how to return to the calling function, you might want to do some reading about the "stack frame". You can learn the concept without getting into any assembler code. Here's an article that might be good to start with: [http://en.citizendium.org/wiki/Stack_frame].
After you have some familiarity with the stack frame, take a look at the expansions of the stdarg macros and see if you can figure out how they work, especially how va_arg walks down the stack, and what info is required for a successful trip. Actually, I don't think you can find these expansions in the stdarg.h file for Darwin; it looks like the #defines point to built-in implementations, so here are some typical, but simplified defs:
// these macros aren't usable; necessary type casts have been removed for clarity
typedef va_list char*;
#define va_start(ap,arg1) ap = &arg1 + sizeof(arg1)
#define va_arg(ap,type) *(ap += sizeof(type))
#define va_end(ap) 0
Note that I"m trusting you not to start asking questions about the stack or the above macros until you've studied how a stack works and how the C stack frame works in particular.
- Ray -
Can we write function with variable number of argument
Hi
Can anybody tell that can we pass variable number of arguments to a function in oracle 10gR2.
As in function decode we can pass variable no. of arguments upto 255 arguments, similarly can we creat a function which accept any no. of variables.I'm not sure that this is what you were asking about, but depending on the logic you want to implement, you can declare the maximum possible number of parameters to your function, give them default values, and then pass to your func as many parameters as you want:
SQL> create or replace function test(p_a number:=null, p_b number:=null) return varchar2 is
2 Result varchar2(100);
3 begin
4 result:='a='||p_a||', b='||p_b;
5 return(Result);
6 end test;
7 /
Function created
SQL> select test() from dual;
TEST()
a=, b=
SQL> select test(1) from dual;
TEST(1)
a=1, b=
SQL> select test(1,2) from dual;
TEST(1,2)
a=1, b=2
SQL> drop function test;
Function dropped
SQL> -
ORA-02315: incorrect number of arguments for default constructor
I was able to register the XML schema successfully by letting Oracle creating the XML Types. Then when I try to execute the create view command the ORA-02315: incorrect number of arguments for default constructor is always raised.
I tried using the XMLTYPE.createXML but it gives me the same error.
Command:
CREATE OR REPLACE VIEW samples_xml OF XMLTYPE
XMLSCHEMA "http://localhost/samplepeak4.xsd" ELEMENT "SAMPLE"
WITH OBJECT ID (ExtractValue(sys_nc_rowinfo$, '/SAMPLES/SAMPLE/SAMPLE_ID')) AS
SELECT sample_t(s.sample_id, s.patient_info, s.process_info, s.lims_sample_id,
cast (multiset(
SELECT peak_t(p.peak_id, p.mass_charge, p.intensity, p.retention_time,
p.cleavage_type, p.search_id, p.match_id, p.mass_observed,
p.mass_expected, p.delta, p.miss, p.rank, p.mass_calculated,
p.fraction)
FROM peak p
WHERE s.sample_id = p.sample_id) AS PEAK107_COLL))
FROM sample s;
Can someone help me.
Thanks
CarlThis example runs without any problems on 9.2.0.4.0. Which version are you running? And which statement causes the error message?
-
Schedules: Invalid number of arguments
Hello All,
I've created a proces flow, associated it with a schedule, deployed both succesfull and I've started/activated the schedule succesful as well. So far all seems fine. But when running the schedule manually (right click in toad and select run) it fails with the following error; the procesflow itself can be executed properly
===========================
ORA-06553: PLS-ORA-06553: PLS-306: wrong number or types of arguments in call to 'PCOMPLETE_REFRESH_PF_JOB'
ORA-06512: at "SYS.DBMS_ISCHED", line 150
ORA-06512: at "SYS.DBMS_SCHEDULER", line 441
ORA-06512: at line 2
Details:
BEGIN
SYS.DBMS_SCHEDULER.RUN_JOB
(job_name => 'OWF_RUN_P.COMPLETE_REFRESH_PF_JOB'
,use_current_session => TRUE);
END;
Error at line 2
ORA-06553: PLS-ORA-06553: PLS-306: wrong number or types of arguments in call to 'PCOMPLETE_REFRESH_PF_JOB'
ORA-06512: at "SYS.DBMS_ISCHED", line 150
ORA-06512: at "SYS.DBMS_SCHEDULER", line 441
ORA-06512: at line 2
=========================
I wonder where OWB determines the number of arguments and where I can influence the number of arguments? One of the arguments which I can see in TOAD is totaly blank, no values. But when I query dba_arguments it doesn't show op?
Any help or suggestions will be highly appreciated!
Gilles
edit: I'm on 10.2.0.3 with both client and repository on a 10.2.0.3 database on windows
Message was edited by:
gillespsake1 wrote:
Can someone help me with this query.Can't you format it and see there are two extra close parenthesis. Remove them and use:
SELECT ID,
sum(
round(
ceil(
MONTHS_BETWEEN(
nvl(
DT1,
add_months(
last_day(
trunc(sysdate)
-1
DT2
2
) * 10
) paid
FROM tabel1
GROUP BY ID
/SY. -
ui:ContextMenuItem in MXML causes Error 1136: Incorrect number of arguments
Hello,
I'm trying to define a context menu declaratively like so:
quote:
<ui:ContextMenu id="editChartDataContextMenu">
<ui:customItems>
<mx:Array>
<ui:ContextMenuItem caption="Clear"/>
</mx:Array>
</ui:customItems>
</ui:ContextMenu>
However, the Flex compiler gives an error for the line that
reads "<ui:ContextMenuItem ....". (the line in boldface).
The error is: 1136: Incorrect number of arguments. Expected
1.
Needless to say, I have experimented with varying number of
attributes, but no luck.
I have googled in vain to find examples where context menus
are built up using markup; all examples seem to be imperative
(ActionScript) code, instead of declarative.
Any ideas?
JoubertI know context menus can be used in limited situations with
limited functionality in Flex. Don't know if your usage is within
the ways context menus are used in Flex. -
ADO Error: an insufficient number of arguments....
Im currently using Access 2000 which is connected to a SQL database. I have a query (Or View) that runs every month. The problem i had was i had to manually make some changes every month to get to the data i needed so i changed this View into a Function with a parameter so i can input the detail(s) i need and it will run correctly - this works so far but the original View was also used within other queries that were created. Now the problem i have now is some of the other views that are now connected with the newly created Function comes up with the error:
ADO error: an insufficient number of arguments were supplied for the procedure or function Name_Of_Function.
I called the newly created function the exact name as the original view to ensure i had no problems. Any idea of whats happening here and how to resolve?
ThanksHeres the function i have:
Code BlockSELECT TOP 100 PERCENT dbo.[Totals].User, dbo.[Totals].[Account Name], dbo.[Totals].Company, dbo.[Totals].Name,
dbo.[User].Amount AS [Month Amount], dbo.[User].Profit AS [Month Profit], SUM(dbo.[Totals].[Y Amount]) AS [Y Amount],
SUM(dbo.[Totals].[Y Profit]) AS [Y Profit], dbo.[User].Month
FROM dbo.[User] RIGHT OUTER JOIN
dbo.[Totals] ON dbo.[User].[Account Name] = dbo.[Totals].[Account Name] AND
dbo.[User].User = dbo.[Totals].User
GROUP BY dbo.[Totals].User, dbo.[Totals].[Account Name], dbo.[Totals].Company, dbo.[Totals].Name,
dbo.[User].Amount, dbo.[User].Profit, dbo.[User].Month
HAVING (NOT (dbo.[Totals].User = N'Temp')) AND (dbo.[User].Month = @Month)
ORDER BY dbo.[Totals].User, dbo.[Totals].Company
Where it states Month = @Month is where the problem is i think. This Function runs fine as i want it to. But when im in another view that uses this function it get the above error. The only way i dont get the error is when i type in the month then all runs fine - but i would prefer it to ask me what month i need the data for????
Thanks -
Error: An insufficient number of arguments were supplied for function
Hi ,
I changed the data source for a data set on my report . The data source is still pointing to same server and database but I am getting this error
"An error occurred during local report processing
Query execution failed for data set 'Data Set Name'
An insufficient number of arguments were supplied for function "
I checked the function number of arguments again and it was correct and even executed the function in the dataset query designer and it works fine.
any ideas for the reason for this error ?Without seeing the query you use or function its hard to suggest.
See if parameter passed from SSRS has expected values. Is there some multivalued parameters involved?
Please Mark This As Answer if it helps to solve the issue Visakh ---------------------------- http://visakhm.blogspot.com/ https://www.facebook.com/VmBlogs
Maybe you are looking for
-
Showing text in PDF in Preview
Hello, I'm currently working with an application that at certain points generates pdf's to show reports. It works fine on windows, but when I try to open them in the preview on the Mac OS X Mavericks, it shows an empty document. I can open it, select
-
Delay at start/end of continous zoom
(Continuing an off-shoot from another topic.) As I play around some more with the "continuous zoom" feature, I keep thinking this should start and end more quickly (if I had to rank them, the latter is more important). For example, when I want to sto
-
Changing my primary email address
hi, i have just moved over to bt and they have set up a primary email address that i have not asked for can any one tell me how i change this to something of my own choice . thanks wayne
-
How would I distribute a .jar package without installing it. I need this because the .jar is the mysql driver and I am not sure how to import it into my code (do I have to extract the files inside) or how to set the classpath I wish to use inside my
-
Using Active Directory to connect to OS X VPN
I have 2 servers in my infrastructure that handle my entire small business. I have a MacMini with Mountain Lion and Server running along with Windows SBS. The Mountain Lion server has a lot of resources that we use, namely the VPN. When my users a