Calling a function that outside a package in a package
Hi
i have a file in a package which must call a function which is located in the same directory as the main program file. but the package can not find the function. Is there anyway the class in the package can call the function whcih is in a different location. the function i want to call cant go into a package.
Any help would be grateful
thanks
i was under the impression that calling a method ina
class with no package was not possible from withina
class that is part of a package... is this not the
case?
As of 1.4 there is no way to import the default
package class into a normal package and thus there is
no way to call it.
There are two solutions.
1. Add a package.
2. Add a wrapper class (with a package) that calls the desired class. Compile it in 1.3. Use the class/jars produced from that in your 1.4 system.
Similar Messages
-
Can a loaded SWF call a function that lives in the parent?
I'm building a pretty simple Flash site in AS3. There is a
main movie (main.swf) that simply loads different swfs via buttons
on a main nav bar. The user clicks on a MC in "main.swf" and a
function is called, loadMyContent("section1.swf"), is called and it
animates in nicely. Other buttons use the same function, loading
section2.swf, section3.swf, etc.
I've defined how "loadMyContent()" works in the the main
movie's document class file. It's all working fine when I just need
to load content from a user action from the buttons that live in
"main.swf". I want to call that same "loadContent" function from
within "section1.swf" and have "main.swf" run it's "loadContent"
fuction, but I can't seem to figure out how to make a child call a
function that lives in the parent.
Is there any way of having my child do this?
I have a suspicion I may have to define that "loadContent"
somewhere else, but I'm a little stumped now. I'm not really
familiar with design patterns yet, although I want to get an
understanding of them sometime soon. Can anyone offer some help
with my immediate need or suggest a route to a solution?
Thanks.kglad,
Thank you very much! That worked perfectly. My section1 FLA
is now compiling it's SWF without complaint.
In case someone else is following this, the exact code I
ended up using to cast "this.parent.parent" as a MovieClip is:
MovieClip(this.parent.parent).loadMyContent("section2.swf");
The discussion I think kglad is referencing is
this
discussion. If that's not it, just let me know. Again, kglad,
thank you! -
How to call a Function that will return me boolean value
Hi all ,
I am try to call a function that is included in my ApplictionModule the following is my method code
public boolean callUpdateDepartmentNameFunction(int deptNo,String newName)
boolean result=false;
System.out.println("first");
CallableStatement plsqlBlock =null;
System.out.println("sec");
String statement="BEGIN :3 = update_dname_func(:1,:2); END;";
System.out.println("third");
plsqlBlock=getDBTransaction().createCallableStatement(statement,0);
try{
System.out.println("forth");
plsqlBlock.registerOutParameter(3,OracleTypes.BOOLEAN);
plsqlBlock.setInt(1,deptNo);
plsqlBlock.setString(2,newName);
plsqlBlock.execute();
result=plsqlBlock.getBoolean(0);
catch(SQLException sqlException)
throw new SQLStmtException(CSMessageBundle.class,CSMessageBundle.EXC_SQL_EXECUTE_COMMAND,statement,sqlException);
finally
try{
plsqlBlock.close();
catch(SQLException e)
e.printStackTrace();
} return result;
while am runing my page is am getting error like
Error
1. JBO-29000: Unexpected exception caught: oracle.jbo.SQLStmtException, msg=JBO-27121: SQL error during statement execution. Statement: BEGIN :3 = update_dname_func(:1,:2); END;
2. JBO-27121: SQL error during statement execution. Statement: BEGIN :3 = update_dname_func(:1,:2); END;
3. Invalid column type
callUpdateDepartmentNameFunction_deptNO
callUpdateDepartmentNameFunction_newName
callUpdateDepartmentNameFunction
regards,
Prabeethsoy PHi,
http://download-uk.oracle.com/docs/html/B25947_01/bcadvgen005.htm#sm0297
has an example of how to call a stored procedure with out parameters. Please correct your code accordingly
Frank -
SOLVED: How can I use or call a function that returns %ROWTYPE?
Hi
edit: you can probably skip all this guff and go straight to the bottom...In the end this is probably just a question of how to use a function that returns a %rowtype. Thanks.
Currently reading Feuerstein's tome, 5th ed. I've downloaded and run the file genaa.sp, which is a code generator. Specifically, you feed it a table name and it generates code (package header and package body) that will create a cache of the specified table's contents.
So, I ran:
HR@XE> @"C:\Documents and Settings\Jason\My Documents\Work\SQL\OPP5.WEB.CODE\OPP5.WEB.CODE\genaa.sp"
749 /
Procedure created.
HR@XE> exec genaa('EMPLOYEES');which generated a nice bunch of code, viz:
create or replace package EMPLOYEES_cache is
function onerow ( EMPLOYEE_ID_in IN HR.EMPLOYEES.EMPLOYEE_ID%TYPE) return HR.EMPLOYEES%ROWTYPE;
function onerow_by_EMP_EMAIL_UK (EMAIL_in IN HR.EMPLOYEES.EMAIL%TYPE) return HR.EMPLOYEES%ROWTYPE;
procedure test;
end EMPLOYEES_cache;
create or replace package body EMPLOYEES_cache is
TYPE EMPLOYEES_aat IS TABLE OF HR.EMPLOYEES%ROWTYPE INDEX BY PLS_INTEGER;
EMP_EMP_ID_PK_aa EMPLOYEES_aat;
TYPE EMP_EMAIL_UK_aat IS TABLE OF HR.EMPLOYEES.EMPLOYEE_ID%TYPE INDEX BY HR.EMPLOYEES.EMAIL%TYPE;
EMP_EMAIL_UK_aa EMP_EMAIL_UK_aat;
function onerow ( EMPLOYEE_ID_in IN HR.EMPLOYEES.EMPLOYEE_ID%TYPE)
return HR.EMPLOYEES%ROWTYPE is
begin
return EMP_EMP_ID_PK_aa (EMPLOYEE_ID_in);
end;
function onerow_by_EMP_EMAIL_UK (EMAIL_in IN HR.EMPLOYEES.EMAIL%TYPE)
return HR.EMPLOYEES%ROWTYPE is
begin
return EMP_EMP_ID_PK_aa (EMP_EMAIL_UK_aa (EMAIL_in));
end;
procedure load_arrays is
begin
FOR rec IN (SELECT * FROM HR.EMPLOYEES)
LOOP
EMP_EMP_ID_PK_aa(rec.EMPLOYEE_ID) := rec;
EMP_EMAIL_UK_aa(rec.EMAIL) := rec.EMPLOYEE_ID;
end loop;
END load_arrays;
procedure test is
pky_rec HR.EMPLOYEES%ROWTYPE;
EMP_EMAIL_UK_aa_rec HR.EMPLOYEES%ROWTYPE;
begin
for rec in (select * from HR.EMPLOYEES) loop
pky_rec := onerow (rec.EMPLOYEE_ID);
EMP_EMAIL_UK_aa_rec := onerow_by_EMP_EMAIL_UK (rec.EMAIL);
if rec.EMPLOYEE_ID = EMP_EMAIL_UK_aa_rec.EMPLOYEE_ID then
dbms_output.put_line ('EMP_EMAIL_UK lookup OK');
else
dbms_output.put_line ('EMP_EMAIL_UK lookup NOT OK');
end if;
end loop;
end test;
BEGIN
load_arrays;
end EMPLOYEES_cache;
/which I have run successfully:
HR@XE> @"C:\Documents and Settings\Jason\My Documents\Work\SQL\EMPLOYEES_CACHE.sql"
Package created.
Package body created.I am now trying to use the functionality within the package.
I have figured out that the section
BEGIN
load_arrays;
end EMPLOYEES_cache;
/is the initialization section, and my understanding is that this is supposed to run when any of the package variables or functions are referenced. Is that correct?
With that in mind, I'm trying to call the onerow() function, but it's not working:
HR@XE> select onerow(100) from dual;
select onerow(100) from dual
ERROR at line 1:
ORA-00904: "ONEROW": invalid identifier
HR@XE> select employees_cache.onerow(100) from dual;
select employees_cache.onerow(100) from dual
ERROR at line 1:
ORA-06553: PLS-801: internal error [55018]
HR@XE> select table(employees_cache.onerow(100)) from dual;
select table(employees_cache.onerow(100)) from dual
ERROR at line 1:
ORA-00936: missing expressionHe provides the code genaa.sp, and a very brief description of what it does, but doesn't tell us how to run the generated code!
Now, I have just done some googling, and it seems that what I am trying to do isn't possible. Apparently %ROWTYPE is PL/SQL, and not understood by SQL, so you can't call onerow() from sql. Correct?
So I try wrapping the call in an exec:
HR@XE> exec select employees_cache.onerow(100) from dual;
BEGIN select employees_cache.onerow(100) from dual; END;
ERROR at line 1:
ORA-06550: line 1, column 30:
PLS-00382: expression is of wrong type
ORA-06550: line 1, column 7:
PLS-00428: an INTO clause is expected in this SELECT statement
HR@XE> exec select table(employees_cache.onerow(100)) from dual;
BEGIN select table(employees_cache.onerow(100)) from dual; END;
ERROR at line 1:
ORA-06550: line 1, column 14:
PL/SQL: ORA-00936: missing expression
ORA-06550: line 1, column 7:
PL/SQL: SQL Statement ignored
HR@XE> exec employees_cache.onerow(100)
BEGIN employees_cache.onerow(100); END;
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00221: 'ONEROW' is not a procedure or is undefined
ORA-06550: line 1, column 7:
PL/SQL: Statement ignoredNo joy.
Of course, now that I'm looking at it again, it seems that the way to go is indicated by the first error:
PLS-00428: an INTO clause is expected in this SELECT statement
So am I supposed to create a type of EMPLOYEES%ROWTYPE in a PL/SQL procedure, and the idea of this code, is that the first call to onerow() runs the initialiation code, which populates the cache, and all subsequent calls to onerow() (whether by my session or any other) will use the cache?
I've had a stab at this, but still, no joy:
create or replace procedure testcache is
emp employees%rowtype;
begin
select employees_cache.onerow(100) from dual into emp;
dbms_output.put_line('Emp id: ' || emp.employee_id);
end testcache;
show errors
HR@XE> @testcache.sql
Warning: Procedure created with compilation errors.
Errors for PROCEDURE TESTCACHE:
LINE/COL ERROR
4/9 PL/SQL: SQL Statement ignored
4/54 PL/SQL: ORA-00933: SQL command not properly ended
HR@XE>Have a feeling this should be really easy. Can anybody help?
Many thanks in advance.
Jason
Edited by: 942375 on 08-Feb-2013 11:45>
Ha, figured it out
>
Hopefully you also figured out that the example is just that: a technical example of how to use certain Oracle functionality. Unfortunately it is also an example of what you should NOT do in an actual application.
That code isn't scaleable, uses expensive PGA memory, has no limit on the amount of memory that might be used and, contrary to your belief will result in EVERY SESSION HAVING ITS OWN CACHE of exactly the same data if the session even touches that package.
Mr. Feuerstein is an expert in SQL and PL/SQL and his books cover virtually all of the functionality available. He also does an excellent job of providing examples to illustrate how that functionality can be combined and used. But the bulk of those examples are intended solely to illustrate the 'technical' aspects of the technology. They do not necessarily reflect best practices and they often do not address performance or other issues that need to be considered when actually using those techniques in a particular application. The examples show WHAT can be done but not necessarily WHEN or even IF a given technique should be used.
It is up to the reader to learn the advantages and disadvantages of each technicalogical piece and determine when and how to use them.
>
Now, I have just done some googling, and it seems that what I am trying to do isn't possible. Apparently %ROWTYPE is PL/SQL, and not understood by SQL, so you can't call onerow() from sql. Correct?
>
That is correct. To be used by SQL you would need to create SQL types using the CREATE TYPE syntax. Currently that syntax does not support anything similar to %ROWTYPE.
>
So am I supposed to create a type of EMPLOYEES%ROWTYPE in a PL/SQL procedure, and the idea of this code, is that the first call to onerow() runs the initialiation code, which populates the cache, and all subsequent calls to onerow() (whether by my session or any other) will use the cache?
>
NO! That is a common misconception. Each session has its own set of package variables. Any session that touches that package will cause the entire EMPLOYEES table to be queried and stored in a new associative array specifically for that session.
That duplicates the cache for each session using the package. So while there might be some marginal benefit for a single session to cache data like that the benefit usually disappears if multiple sessions are involved.
The main use case that I am aware of where such caching has benefit is during ETL processing of staged data when the processing of each record is too complex to be done in SQL and the records need to be BULK loaded and the data manipulated in a loop. Then using an associative array as a lookup table to quickly get a small amount of data can be effective. And if the ETL procedure is being processed in parallel (meaning different sessions) then for a small lookup array the additional memory use is tolerable.
Mitigating against that is the fact that:
1. Such frequently used data that you might store in the array is likely to be cached by Oracle in the buffer cache anyway
2. Newer versions of Oracle now have more than one cache
3. The SQL query needed to get the data from the table will use a bind variable that eliminates repeated hard parsing.
4. The cursor and the buffer caches ARE SHARED by multiple sessions globally.
So the short story is that there would rarely be a use case where ARRAYs like that would be preferred over accessing the data from the table. -
How to call c functions that expects c structs from java program?
i need to call from my java program to c functions that get
c structs as a parameters in their prototype.
as you probablly know java is not working with structs (classes only), so my question is how can i do it , i mean call the c functions that gets structs as parameters form java????i believe your c function can accept a jobject and then inside your c function you have to translate that jobject into a c struct by using the jni methods.
the only reason your c function cant accept structs from java is because java does not have such structures. your c function can accept any data type that has been defined and a jobject has been defined.
if you have no control over the c functions that are being called, you need to write a wrapper function for those c function. the wrapper functions do the translation from jobject to a struct...then call the c other c functions. -
Calling a function that's inside another function
function test1():void
function test2():void {..}
How do I call test2 function (outside test1 function)? Is it possible?Hi,
yes it is possible.
Here is the code helps u
function foo():Function
var x:int = 40;
function rectArea(y:int):int // function closure defined
return x * y
return rectArea;
var myProduct:Function = foo();
var s = myProduct(4);
trace(s);
Saransoft -
Call a function that returns a table
Hi all,
I create a partner link that calls a function from the database. That function returns a type defined in the database that is a table:
ceate or replace type tablela_de_ids is table of number
the XSD created is:
<schema targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/db/IGIF/WC01/PESQUISA_UT/" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:db="http://xmlns.oracle.com/pcbpel/adapter/db/IGIF/WC01/PESQUISA_UT/">
<element name="InputParameters">
<complexType>
<sequence>
<element name="P_NIR" type="decimal" db:index="1" db:type="NUMBER" minOccurs="0" nillable="true"/>
<element name="P_NOME_COMPLETO" type="string" db:index="2" db:type="VARCHAR2" minOccurs="0" nillable="true"/>
<element name="P_SEXO" type="string" db:index="3" db:type="VARCHAR2" minOccurs="0" nillable="true"/>
<element name="P_DATA_NASC" type="dateTime" db:index="4" db:type="DATE" minOccurs="0" nillable="true"/>
<element name="P_NATURALIDADE" type="string" db:index="5" db:type="VARCHAR2" minOccurs="0" nillable="true"/>
</sequence>
</complexType>
</element>
<element name="OutputParameters">
<complexType>
<sequence>
<element name="PESQUISA_UT" type="db:TABELA_DE_IDS" db:index="0" db:type="Array"
minOccurs="1" nillable="true"/>
</sequence>
</complexType>
</element>
<complexType name="TABELA_DE_IDS" >
<sequence>
<element name="PESQUISA_UT_ITEM" type="decimal" db:type="NUMBER" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
</sequence>
</complexType>
</schema>
I'm having a problem whit the output.
When the function returs only a number, it's correct...
<messages>
- <WC01_Pesquisa_Ut_InputVariable>
- <part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="InputParameters">
- <InputParameters xmlns="http://xmlns.oracle.com/pcbpel/adapter/db/IGIF/WC01/PESQUISA_UT/">
<P_NIR xmlns="">165968274</P_NIR>
<P_NOME_COMPLETO xmlns="">maria eduarda oliveira</P_NOME_COMPLETO>
<P_SEXO xmlns="">Feminino</P_SEXO>
<P_DATA_NASC xmlns="">1944-09-05</P_DATA_NASC>
<P_NATURALIDADE xmlns=""/>
</InputParameters>
</part>
</WC01_Pesquisa_Ut_InputVariable>
- <WC01_Pesquisa_Ut_OutputVariable>
- <part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="OutputParameters">
- <db:OutputParameters xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:db="http://xmlns.oracle.com/pcbpel/adapter/db/IGIF/WC01/PESQUISA_UT/">
- <PESQUISA_UT>
<PESQUISA_UT_ITEM>189442</PESQUISA_UT_ITEM>
</PESQUISA_UT>
</db:OutputParameters>
</part>
<part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="response-headers">[]
</part>
</WC01_Pesquisa_Ut_OutputVariable>
</messages>
but when the function returns more than one, I can't see the result:
<messages>
- <WC01_Pesquisa_Ut_InputVariable>
- <part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="InputParameters">
- <InputParameters xmlns="http://xmlns.oracle.com/pcbpel/adapter/db/IGIF/WC01/PESQUISA_UT/">
<P_NIR xmlns="">123456789</P_NIR>
<P_NOME_COMPLETO xmlns="">ferreira</P_NOME_COMPLETO>
<P_SEXO xmlns="">Feminino</P_SEXO>
<P_DATA_NASC xmlns="">1944-09-05</P_DATA_NASC>
<P_NATURALIDADE xmlns=""/>
</InputParameters>
</part>
</WC01_Pesquisa_Ut_InputVariable>
- <WC01_Pesquisa_Ut_OutputVariable>
- <part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="OutputParameters">
- <db:OutputParameters xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:db="http://xmlns.oracle.com/pcbpel/adapter/db/IGIF/WC01/PESQUISA_UT/">
<PESQUISA_UT/>
</db:OutputParameters>
</part>
<part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="response-headers">[]
</part>
</WC01_Pesquisa_Ut_OutputVariable>
</messages>
Any ideia?
Thanks in advance.
CarlaWhen you invoke the service from the Enterprise Manager, does it give output?
-
How do you call a function that belongs in a package?
Hello,
Can anyone help me with this issue? My intent is to create a procedure that returns a cursor to the results of the query without passing in the cursor to the function. After reading thru online tutorials, I found that I had to create a function, not a procedure.
I created a .sql file as such:
create or replace package GetEmployeeCursors is
type empResultSet is REF CURSOR;
function Funct1 return empResultSet;
end GetEmployeeCursors;
create or replace package body GetEmployeeCursors is function Funct1 return
empResultSet is
tmpResultSet empResultSet;
begin
open tmpResultSet for
select * from employee;
return tmpResultSet;
end Funct1;
end GetEmployeeCursors;
Both the package and package body were created without any problems.
Then, I tried to call the Funct1() in many ways, including the following:
call System.getEmployeeCursors.Funct1()
call getEmployeeCursors.Funct1()
call Funct1()
All produced the following error message:
ERROR at line 1:
ORA-06576: not a valid function or procedure name
How do I call Funct1()?
Thanks so much in advance,
--AnnaHello Frank,
Thanks for the information regarding not using the system schema when creating packages.
I tried what you suggested to call the Funct1 in many ways:
SQL> mycursor := system.getEmployeeCursors.funct1;
SP2-0734: unknown command beginning "mycursor :..." - rest of line ignored.
SQL> mycursor := getEmployeeCursors.funct1;
SP2-0734: unknown command beginning "mycursor :..." - rest of line ignored.
SQL> mycursor := funct1;
SP2-0734: unknown command beginning "mycursor :..." - rest of line ignored.
SQL> select *
2 from table(system.getEmployeeCursors.funct1);
from table(system.getEmployeeCursors.funct1)
ERROR at line 2:
ORA-22905: cannot access rows from a non-nested table item
Could there be something else I need to do before making the function call?
Thanks alot!
--Anna -
Calling stored function that contains commit from .JCX
I would like to call a stored function (Oracle) that contains a commit, from
a WebLogic database control (.JCX). The suggested way to call a stored
function is to do something like:
* @jc:sql statement::
* SELECT MY_FUNCTION({projectID}, {staffID}) FROM DUAL
int callMyFunction(int projectID, int staffID) throws SQLException;
This doesn't work if the function contains a commit - I get: ORA-14552:
cannot perform a DDL, commit or rollback inside a query or DML. I don't
want to just get my own connection to the db in my code and call it directly
because then I won't be using the connection pool provided by WebLogic. Is
there a recommended way to do this? So far, the database control has taken
care of getting connections from the pool. Can I get a connection from the
pool explicitely and use it? How do I "return" it to the pool?
Thanks.
SteveSteve Kincer wrote:
Thanks for the response.
So far, I've only used the database control, so I haven't been doing any
transaction management (rollbacks/commits) myself - I've just called methods
in my database control and not worried it. Come to think of it, all my
other calls are just SELECTs, so it hasn't been an issue, but I've assumed
WebLogic or the connection pool would take care of transaction management
for me if I coded an UPDATE function in the database control.
What do you mean by "find and use the control API provided for
defining/demarking
transactions" ... what control?
I've seen stuff in the help file about transaction management, so I can
research that, but where do I get the connection to use for this? I'm
thinking I should get it from the pool (rather than create my own
connection). I saw a generated method in my database control called
getConnection, but when I tried using it with a CallableStatement I got
error:
"The transaction is no longer active - status: 'Committed'. No further JDBC
access is allowed within this transaction."This means that you are automatically being taken care of transactionally,
and don't need to do any commit() calls.
Joe
>
I guess it's pretty obvious that I'm pretty new to WebLogic.
Thanks for your help.
Steve
"Joe Weinstein" <[email protected]> wrote in message
news:[email protected]...
Steve Kincer wrote:
I would like to call a stored function (Oracle) that contains a commit,
from a WebLogic database control (.JCX). The suggested way to call a
stored function is to do something like:
* @jc:sql statement::
* SELECT MY_FUNCTION({projectID}, {staffID}) FROM DUAL
int callMyFunction(int projectID, int staffID) throws SQLException;
This doesn't work if the function contains a commit - I get: ORA-14552:
cannot perform a DDL, commit or rollback inside a query or DML.Right. It is bad style to hide a commit in a procedure. The begin-tx
and commit should be at the same level, above any specific SQL for the
tx. How did you start a transaction? Are you sure you have an ongoing
transaction?
I don't
want to just get my own connection to the db in my code and call it
directly because then I won't be using the connection pool provided by
WebLogic. Is there a recommended way to do this? So far, the database
control has taken care of getting connections from the pool. Can I get a
connection from the pool explicitely and use it? How do I "return" it to
the pool?You should find and use the control API provided for defining/demarking
transactions.
Joe
Thanks.
Steve -
JavaFX : How to call java function that returns hashtable and manipulate
I have a requirement to {color:#0000ff}create a java object in JavaFX script code{color}. Then call a java function using the created java object. The java function returns hashtable. Then traverse through each element of hashtable. Finally I need to create a similar structure in JavaFX.
If you need to use a Java class that uses generics you need to take special steps. Since JavaFX does not support generics you need to create a java wrapper to hide the calls that use generics and call the wrapper class from FX.
-
Problems with PL/SQL Calling Java Function that returns String []
Hi,
I have written the following code. It's not compiling OK.
DECLARE
TYPE Tokens_Type IS VARYING ARRAY(20) OF VARCHAR2(20);
s1 Tokens_Type DEFAULT NULL;
SQL_STR VARCHAR2(2000) DEFAULT NULL;
BEGIN
SQL_STR := 'CREATE OR REPLACE FUNCTION Schema1.SPLIT_STR (S2 VARCHAR2(20)) ' ||
'RETURN s1 ' ||
'AS LANGUAGE JAVA ' ||
'NAME ''String_Mani.split_it (String) return java.lang.String []''';
EXECUTE IMMEDIATE SQL_STR;
END;
What's the problem with this?You cannot create a function with a locally defined return type. As soon as this script is executed, Oracle no longer knows what the TOKEN_TYPE type is any more, so the function will be invalid.
You need to use a collection type defined at the database level or defined in a package - somewhere where it will persist. -
Calling c function that return a string
Hallo,
I found an example for calling void c function(http://zone.ni.com/devzone/cda/epd/p/id/1513). I could adapt the example and make the function return an integer. the code of the adapted function would look like this:
int __declspec(dllexport) multiply(int number) {return number*3; }
But I have problems when I want to return a string. Does someone knows how I should do. I tried:
char* __declspec(dllexport) say(int number) {return "hallo"; }
but won't compile.yes the question was more a c question then a labview question. I found the solution anyway, the correct code in order to get string is:
_declspec(dllexport) char* testchar2();_declspec(dllexport) char* testchar2() { return "hallo"; } -
Calling C function that has Void* pointer
Hi
I am trying to use some c functions in java using the JNI. This C function has 3 inputs, 2 integers and a void* pointer. I can import the 2 integers from java but dont know how to deal with the void* pointer.
I would be greatful if someone could help me with this problem.
Thanks
DerekHi,
i guess the void * points to some C thingy. If you got
the void * from C (via JNI), treat it as a long and cast it back in JNI
as andyba suggested. If it is more than this (e.g. a C++ object)
there is no general solution, but there are numerous special ones.
If you tell a little more concrete what your void * points to,
there might be more concrete suggestions.
To get an idea, study e.g. swig's java module. But be warned,
this is no simple topic.
http://swig.sourceforge.net
Have fun,
Klaus -
Example of calling a function with passing parms
Does anyone have an example of calling a function that returns a refcursor, but also has passing parms? I've looked at the samples and they don't have passing parms. I've tried what you would think (adding an in passing parm to the function call and I get an ora-06550 error. If I don't pass the in parm, it works.
i.e. FUNCTION MyFunction(ininteger in integer) returns refcursor;
Thanx in advance,
FrankHere is an example:
plsql code:
CREATE OR REPLACE PACKAGE testfun IS
TYPE RefCursor IS REF CURSOR;
FUNCTION fun1(keyid_in IN VARCHAR2) RETURN RefCursor;
END testfun;
SHOW ERRORS;
CREATE OR REPLACE PACKAGE BODY testfun IS
FUNCTION fun1(keyid_in IN VARCHAR2) RETURN RefCursor IS
myCur RefCursor;
BEGIN
OPEN myCur FOR
SELECT table_name
FROM user_tab_columns
WHERE rownum < 20;
RETURN(myCur);
END fun1;
END testfun;
SHOW ERRORS;
c# code:
using System;
using System.Data;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
namespace ODPSample
/// <summary>
/// Sample: Demonstrates array binding
/// </summary>
class ArrayBind
static void Main(string[] args)
// Connect
string connectStr = "User Id=fedpro;Password=password;Data Source=fedprodev";
OracleConnection connection = new OracleConnection(connectStr);
connection.Open();
OracleCommand loCommand = new OracleCommand("testfun.fun1", connection);
loCommand.CommandType = CommandType.StoredProcedure;
//RETURN VALUES MUST BE FIRST IN THE LIST OF PARMS!!!
OracleParameter loReturnValue = loCommand.Parameters.Add("refcursor",OracleDbType.RefCursor);
loReturnValue.Direction = ParameterDirection.ReturnValue;
//Parm1
OracleParameter loParm1 = loCommand.Parameters.Add("keyid_in",OracleDbType.Varchar2);
loParm1.Direction = ParameterDirection.Input;
loParm1.Value = "TEST";
//Create an OracleDataAdapter
OracleDataAdapter loDataAdapter = new OracleDataAdapter(loCommand);
DataTable loDataTable = new DataTable();
try
//Execute the function call
loCommand.ExecuteNonQuery();
//Populate the DataTable
loDataAdapter.Fill(loDataTable,(OracleRefCursor)loReturnValue.Value);
int rowcnt = loDataTable.Rows.Count;
Console.WriteLine(rowcnt);
catch (Exception e)
Console.WriteLine(e.Message);
throw; -
Calling a function from another class - help!
I realize that this is probably a basic thing for people who have been working with JavaFX for a while, but it is eluding me, and I have been working on it for over a week.
I need to call a function that is in another class. Here's the deal. In EntryDisplayController.java, there are 2 possible passwords that can be accepted - one will give full access to the car, the second will limit functions on the car. So when a password is entered and verified as to which one it is, I need to call a function in MainDisplayController.java to set a variable that will let the system know which password is being used - full or restricted.
So in MainDisplayController.java I have this snippet to see
public class MainDisplayController implements Initializable, ControlledScreen {
ScreensController myController;
public static char restrict;
* Initializes the controller class.
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
public void setRestriction(){
restrict = 0;
restrictLabel.setText("RESTRICTED");
public void clearRestriction(){
restrict = 1;
restrictLabel.setText("");
And in EntryScreenDisplay.java I have this snippet:
public class EntryDisplayController implements Initializable, ControlledScreen {
@FXML
private Label passwordLabel ;
static String password = new String();
static String pwd = new String("");
ScreensController myController;
private MainDisplayController controller2;
* Initializes the controller class.
@Override
public void initialize(URL url, ResourceBundle rb) {
setPW(pwd); // TODO
@FXML
private void goToMainDisplay(ActionEvent event){
if(password.equals ("123456")){
controller2.clearRestriction();
myController.setScreen(ScreensFramework.MainDisplayID);
pwd = "";
password = "";
setPW(pwd);
else if(password.equals ("123457")){
controller2.setRestriction();
myController.setScreen(ScreensFramework.MainDisplayID);
pwd = "";
password = "";
setPW(pwd);
else{
password = "";
pwd = "";
setPW(pwd);
When I enter the restricted (or full) password, I get a long list of errors, ending with
Caused by: java.lang.NullPointerException
at velocesdisplay.EntryDisplayController.goToMainDisplay(EntryDisplayController.java:60)
Line 60 is where "controller2.setRestriction(); is.
As always, thanks for any help.
Kind regards,
DavidYou never set the controller2 variable to anything, which is why you get a null pointer exception when you try to reference it.
public static variables (and even singletons) are rarely a good idea as they introduce global state (sometimes they can be, but usually not).
If a static recorder like this can only have a binary value, use a boolean, if it can have multiple values, use an enum.
Some of the data sharing solutions in dependency injection - Passing Parameters JavaFX FXML - Stack Overflow might be more appropriate.
I also created a small framework for roll based solutions in JavaFX which perhaps might be useful:
http://stackoverflow.com/questions/19666982/is-there-a-way-to-implement-a-property-like-rendered-on-javafx
https://gist.github.com/jewelsea/7229260
It was just something I hacked together, so it's not a fully polished solution and you probably don't need something quite so complex.
What you need is a model class shared between the components of your application. Dependency injection frameworks such as afterburner.fx can help achieve this in a fairly simple to use way.
If you don't want to go with a dependency injection framework, then you could use either a static singleton model class for your settings or pass the model class using the mechanism in defined in the passing parameters link I provided. For a model class example, see the ClickCounter class from this example. That example doesn't use FXML, but to put it together with the passing parameters solution, for your restriction model, you would have something like the following:
private class Restricted {
private final ReadOnlyBooleanWrapper restricted;
public Restricted(boolen isRestricted) {
restricted = new ReadOnlyBooleanWrapper(isRestricted);
public boolean isRestricted() {
return restricted.get();
public ReadOnlyBooleanProperty restrictedProperty() {
return restricted.getReadOnlyProperty();
Then in your EntryDisplayController you have:
@FXML
public void goToMainDisplay(ActionEvent event) {
// determine the restriction model as per your original code...
RestictionModel restrictionModel = new RestrictionModel(<appropriate value>);
FXMLLoader loader = new FXMLLoader(
getClass().getResource(
"mainDisplay.fxml"
Stage stage = new Stage(StageStyle.DECORATED);
stage.setScene(
new Scene(
(Pane) loader.load()
MainDisplayController controller =
loader.<MainDisplayController>getController();
controller.initRestrictionModel(restrictionModel);
stage.show();
class MainDisplayController() {
@FXML private RestrictionModel restrictionModel;
@FXML private RestrictLabel restrictLabel;
public void initialize() {}
// naming convention (if the restriction model should only be set once per controller, call the method init, otherwise call it set).
public void initRestrictionModel(RestrictionModel restrictionModel) {
this.restrictionModel = restrictionModel;
// take some action based on the new restriction model, for example
restrictLabel.textProperty.bind(
restrictionModel.restrictedProperty().asString()
If you have a centralized controller for your navigation and instantiation of your FXML (like in this small FXML navigation framework), then you can handle the setting of restrictions on new screens centrally within the framework at the point where it loads up FXML or navigates to a screen (it seems like you might already have something like this with your ScreensController class).
If you do this kind of stuff a lot, then you would probably benefit from a move to a framework like afterburner. If it is just a few times within your application, then perhaps something like the above outline will give you enough guidance to implement a custom solution.
Maybe you are looking for
-
Problem with signing in to Ovi
Hello I downloaded the Ovi Store app on my N96 When I login it says "you are signed in as dieter***" and a few seconds later it says: "Sign-in Failed, Check your username and password". I triend about ten times, but it's always the same problem. I c
-
Mail is broken since 10.8.2 update
I updated to v 10.8.2 two days ago, since then Mail has been broken. I can see the sender, date, a snippet of message in the in box column but cannot read the message if I attempt to highlight it or click to expand it. It is completely blank, no sen
-
Safari and App Store icons disappeared!!
From my Iphone 3G, safari and app store icons have disappeared, so I can not browse the web and can not go to App Store!! Help please. Just updated today, but did not resolve the problem.
-
I'm looking for a 3rd party application that can retrieve GroupWise mail and save it to disk. I can't seem to find an application that does that, so Im looking around if it is possible to make an application that does that with the SDK. I can't seem
-
pls why dose BOM is maintain in subcontructing .is it used in any other tran. iam a new to sap pls explain