Java stored procedures and triggers in lite
Hi
We are using java stored procedures and java triggers in our application for oracle lite database 5.1.
We would like to know whether these procedures and triggers are uploaded or associated with tables or not because triggers are not being fired for the tables.
The question is - how to find the uploaded procedures and triggers in system tables.
We dont find any tables like (all_objects, user_objects) for this in oracle lite system catalogs given in the documentation.
thanks in advance
yugandhar
I don't have much experience with Lite, but I'm running 9i Personal Edition. Any information about triggers can be found in the "ALL_TRIGGERS" view. You will want to filter out any rows where OWNER = 'SYS' unless you created your triggers as SYS. As for procedures and functions, you can see what you have created in the "ALL_OBJECTS" view where OBJECT_TYPE = 'PROCEDURE' or 'FUNCTION', once again filtering out rows where OWNER = 'SYS'. To see the code of any procedure or function, select substr(text,1,80) from ALL_SOURCE where NAME = 'function name' ORDER BY LINE.
Hope this helps!
Similar Messages
-
Java Stored Procedures and Triggers
I want to to use Java stored procedures and triggers within the Oracle 11g XE
So please , someone can help me because i tried but it didn't work
I don't know where is the problem
Thanks !!WRONG FORUM!
Welcome to the forum but this forum is for Java JDBC questions and issues. Your question should be posted in the SQL and PL/SQL forum
PL/SQL
>
I want to to use Java stored procedures and triggers within the Oracle 11g XE
So please , someone can help me because i tried but it didn't work
I don't know where is the problem
>
Mark this question ANSWERED and repost the question in the other forum
Before you post review the Oracle Database Java Developer's Guide - it shows how to create Java stored procedures and has example code
http://docs.oracle.com/cd/B28359_01/java.111/b31225/chfive.htm
And in the new post don't just say "I tried but it didn't work". You need to post the code that you tried and what you mean by "didn't work".
If you got any exceptions or errors you need to post a copy of the exact message or error that you are getting. -
Java stored procedures and referencing classes
We are referencing to some classes/libraries which are not present in the database. In normal java world, you specify the libraries/classes needed to run your piece of code in the CLASSPATH and that forms part of your complete code.
Can java stored procedures in the database refer to libraries or class files it requires on the file system rather than the database? Is it possible to make this happen?
Thankspshiva,
Posting the same question to multiple forums usually doesn't increase your chances of getting an answer, and it just frustrates those wishing to answer you with the result being that any future questions you post may have less chance of being answered -- because of your uncourteous, initial behaviour.
I have answered your other thread:
java stored procedures and referencing classes
In my opinion, that forum (the Database JVM forum) is the most appropriate for your question.
Good Luck,
Avi. -
Can i use Stored procedures and triggers with SDK
hi all
How to use the stored procedure and Triggers with SDK, can i get a sample code
Regards
SalahHi, Salah.
Use "Exec" in your query to run procedures.
SAPbobsCOM.Recordset oRS;
oRS = (SAPbobsCOM.Recordset)pCmp.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset);
oRS.DoQuery ("EXEC YourStoredProcName");
Triggers are not supported in SDK.
Regards,
Aleksey -
Java Stored Procedures and Sockets
We need to synchronize data real time b/w Oracle and the legacy HP3000 system.
For sending data from Oracle to HP3000 we are thinking of using Sockets.
We dont know whether a socket connection can be established from the Oracle database level or need to be from the OS level(here Linux)
I heard that Java stored procedures(JSP) can establish socket connection.
Can someone provide me pointers regarding
(a) setting up socket connection from the database
(b) possibility of transferring data via sockets and using jdbc, and how to send data efficiently and if it is wise
Thanks,
VinojI don't have much experience with Lite, but I'm running 9i Personal Edition. Any information about triggers can be found in the "ALL_TRIGGERS" view. You will want to filter out any rows where OWNER = 'SYS' unless you created your triggers as SYS. As for procedures and functions, you can see what you have created in the "ALL_OBJECTS" view where OBJECT_TYPE = 'PROCEDURE' or 'FUNCTION', once again filtering out rows where OWNER = 'SYS'. To see the code of any procedure or function, select substr(text,1,80) from ALL_SOURCE where NAME = 'function name' ORDER BY LINE.
Hope this helps! -
Java Stored Procedures and Oracle XE
Hi folks,
Does anyone know if Oracle XE supports Java Stored Procedures.
Thanks in advance,
KrisUnfortunately you misunderstood me. I didn't call Oracle XE crippled, Yes, I did misunderstand. Apologies.
Bottom line - JMS is not extant. JMS and AQ are not quite the same thing.
AQ was developed back in early Oracle8 (8.0) (and possibly the late Oracle 7) days and seems to have been a pure PL/SQL implementation (probably with hooks at the C/C++ DB kernel level). The extensions that link to JMS came later.
Since JMS depends on Java, and since 'Java in the database' is not part of XE by design and well documented, I considered you comment
that JMS is not supported at all in Oracle XE or is at least
severly crippled.to be more than you apparently meant it to be,
AQ is 'supported' but lack of Java Stored Procs causes some limitations here as you have noted, as well as in Oracle Text and interMedia support.
I'd love to see Java in the database for future upgrades to XE. -
How to write stored procedures and triggers in oracle
hai friends ,
i don't know about storedprocedures and trigger.please help on this
issuesHave you tried the documentation yet? PL/SQL Architecture seems to be a good start.
C. -
8i Lite and Java Stored Procedure
Has anyone had success running the Java
Stored Procedure examples with 8i LIte.
My SQLPLus window alwways dies when the demo sql script triest to attach the stored procedure to the table.
The line causing error is:
++++++++++++++++++++++++++++++++++++++++++
alter table inventory attach java source "Oracle.lite.INVENTORY" in '.'
with constructor args(PID,QTY,THRESHOLD);
+++++++++++++++++++++++++++++++++++++++++++
I am using Sun JDK1.3 on Windows2000.
Any help will be highly appreciated.
nullFound the issue. jvm.dll was not in the path.
Bhaven
<BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by Bhaven Avalani ([email protected]):
Has anyone had success running the Java
Stored Procedure examples with 8i LIte.
My SQLPLus window alwways dies when the demo sql script triest to attach the stored procedure to the table.
The line causing error is:
++++++++++++++++++++++++++++++++++++++++++
alter table inventory attach java source "Oracle.lite.INVENTORY" in '.'
with constructor args(PID,QTY,THRESHOLD);
+++++++++++++++++++++++++++++++++++++++++++
I am using Sun JDK1.3 on Windows2000.
Any help will be highly appreciated.
<HR></BLOCKQUOTE>
null -
Jdbc and java stored procedures
Hi all,
I am new to Oracle Java Stored Procedures but I am interested in knowing to which extent is object passing supported.
Can I send any kind of object to a java stored procedure? And back from the procedure? Anybody knows any good resources online about Java Stored Procedures and JDBC?
I also saw that to pass the string back you need to specify java.lang.string, how would I do in order to pass back a user defined object, do I have to register the class in Oracle before (and if yes, how?)or is the classpath enough?
Many thanks,
A.Hi again,
perhaps I didn't understand exactly what you meant with "publish", AFAIK you have to expose the java class (i.e. RowCounter) by using
CREATE OR REPLACE FUNCTION row_count (tab_name VARCHAR2) RETURN NUMBER
AS LANGUAGE JAVA
NAME 'RowCounter.rowCount(java.lang.String) return int';
(BTW this works fine)
or else you cannot access the java class you loaded on the server, and that's where my questions arose. What if I am passing an object, let's say myObject, shouldn't I use the STRUCT mapping then or something like that?
Or, could you clarify what do you mean by publishing to SQL, I just need to access the class from jdbc, not from PL/SQL or others, but as I understand to call the class from JDBC I need to call the function or procedure that calls the class and then I could call it from PL/SQL as well...
Thanks,
A. -
Speed test: PL/SQL vs. Java Stored Procedures
I performed tests on these two procedures:
===========================================
// Create a Statement
Statement stmt = conn.createStatement (ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
// Query the table
ResultSet rset = stmt.executeQuery ("select SIFOB, SIFRA_GU from sezko");
while (rset.next ()) {
salary = rset.getInt(1);
rset.updateInt (1, salary + 1);
salary = rset.getInt(2);
rset.updateInt (2, salary + 1);
rset.updateRow();
} // while
conn.commit();
// Close the RseultSet
rset.close();
// Close the Statement
stmt.close();
===========================================
procedure updateTable is
cursor c_updateTable is select rowid, SIFOB, SIFRA_GU from sezko;
begin
for r_updateTable in c_updateTable loop
update sezko set SIFOB = SIFOB + 1, SIFRA_GU = SIFRA_GU + 1 where rowid = r_updateTable.rowid;
end loop;
commit;
end;
===========================================
First procedure is written in Java (as Java Stored procedure) and second is PL/SQL.
Java is about 10x slower than PL/SQL code.
Can you explain bad performance results?
thank you
Matic & AlesHi,
I suppose the problem is not with the connection object,but with make connection to the database for every executeupdate or executeupdaterow called .Similarly for fetching the data from the database you
can use the fetch size technique.Please check the 8.1.6 Java Developers guide for using this.
Update Batching(For Batch updates and commits)
Fetch Size(For Batch fetching)
Oracle Row Pre-Fetching
Regards
Anand
null -
Sending mail in a Java Stored Procedure
Question: What is the best way to have a Java Stored Procedure connect to our mailhost and send an email? I have been trying to use URL and URLConnection, but I found out URL somehow does not support the "mailto" protocol in the Java Stored Procedure. Funny enough the "mailto" protocol is definetely supported by URL when I test it in the JDK virtual machine.
Maybe this is the reason: I read in the 8i docs that the 8i Virtual Machine is only JDK1.1.6 compliant.
Unfortunately I can't find the 1.1.6 docs anywhere. So I cannot do any research on what protocals are supported in JDK1.1.6 .
Conclusion: Is it possible to send an email in a Java Stored Procedure, and how?
Thanks in advance :-) JohanThe Java mail API was a set of extension libraries for the 1.1 JDK. I have heard of folks who succeeded in loading these intot he database and then using them from within a Java stored procedure.
-
Problem of java stored procedure
hi,
now I use the oracle9i JDeveloper9.0.3.1 to develop java stored procedure and then publish it to oracle9i database.
In the database I create PL/SQL procedure to invoke the java stored procedure.But I encounter the problem,that is ,when I run the PL/SQL procedure ,it throw the java.lang.NullPointerException ,while the java class,the java stored procedure can run correctly invoked by the main class of java.The code of the java stored procedure is as follows:
import java.sql.*;
import java.util.Properties;
public class SQLServerEventDistribute
public static void sqlServerSaveData(String hostName,String databaseName,String user,String password,String tableName,int x1,int y1,int x2,int y2,String ip)
String url="",sql="",userName="",passwd="";
Connection connection;
Statement statement;
url="jdbc:microsoft:sqlserver://"+hostName+":1433;DatabaseName="+databaseName+";User="+user+";Password="+password;
sql="INSERT INTO "+tableName+" VALUES("+x1+","+y1+","+x2+","+y2+",'"+ip+"')";
Properties property=new Properties();
property.setProperty(userName,user);
property.setProperty(passwd,password);
try
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
// DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver());
connection=DriverManager.getConnection(url,property);
statement=connection.createStatement();
statement.execute(sql);
}catch(ClassNotFoundException connectSQLServerEx)
System.out.println(connectSQLServerEx.getMessage());
catch(SQLException connectSQLServerEx)
System.out.println(connectSQLServerEx.getMessage()+connectSQLServerEx.getErrorCode());
the main class is as follows:
public class Test
public static void main(String[] args)
SQLServerEventDistribute.sqlServerSaveData("gsm","gsmd","sa","sa","IPBinding",11,45,24,21,"23.1.248.12");
and the PL/SQL procedure is as follows:
PROCEDURE TEST AS
BEGIN
SQLSERVERSAVEDATA('gsm','gsmd','sa','sa','IPBinding',11,45,24,21,'23.1.248.22');
END;
How can I deal with it?
can you tell me?
thanksHi JavaQQ,
This is just a guess, but I think you need to load the
Micro$oft SQLServer JDBC driver into the Oracle
database (using the "loadjava" utility).
In any case, there are several ways -- apart from JDBC
-- for accessing a different database from within an
Oracle database. Have you tried searching the Oracle
Web sites for suitable products?
Hope this helps.
Good Luck,
Avi.abramia ,thank you very much.
but I have load the Microsoft SQLServer JDBC driver into the Oracle database .
When I debugged the PL/SQL procedure,the exception was thrown at line connection=DriverManager.getConnection(url,property);
What's the problem with it? -
Invoking "java myClass" using Runtime.Exec from a Java Stored Procedure
Hi All,
This is regarding the use of Runtime.getRunTime().exec, from a java programme (a Java Stored Procedure), to invoke another Java Class in command prompt.
I have read many threads here where people have been successuful in invoking OS calls, like any .exe file or batch file etc, from withing Java using the Runtime object.
Even i have tried a sample java programme from where i can invoke notepad.exe.
But i want to invoke another command prompt and run a java class, basically in this format:
{"cmd.exe","java myClass"}.
When i run my java programme (in command prompt), it doesnt invoke another command prompt...it just stays hanging.
When i run the java programme from my IDE, VisualCafe, it does open up a command prompt, but doesnt get the second command "java myCLass".
Infact on the title of the command prompt (the blue frame), shows the path of the java.exe of the Visual Cafe.
and anyway, it doesnt run my java class, that i have specified inside the programme.
Even if i try to run a JAR file, it still doesnt do anything.
(the JAR file other wise runs fine when i manually invoke it from the command prompt).
Well, my question is, actually i want to do this from a Java Stored Procedure inside oracle 8.1.7.
My feeling is, since the Java Stored Procedure wont be running from the command prompt (i will be actually invoking it through a Oracle trigger), it may be able to invoke the command prompt and run the java class i want. and that java class has to run with the SUn's Java, not Oracle JAva.
Does any one have any idea about it?
Has anyone ever invoked a java class or JAR file in command prompt from another Java Programme?
YOur help will be highly appreciated.
(P:S- Right now, my database is being upgraded, so i havent actually been able to create a Java Stored procedure and test it. But i have tested from a normal java programme running in command prompt and also from Visual Cafe).
Thanks in advance.
-- Subhasree.Hello Hari,
Thanks for your quick reply.
Can you please elaborate a little more on exactly how you did? may be just copy an dpaste taht part of teh code here?
Thanks a lot in advance.
--Subhasree -
Java Stored Procedures with 9.2.0.5
We are attempting to create Java Stored Procedures and we receive the following errors when attempting to do so, not sure why this is happening
C:\WSADWorkspaces\siscore\siscoreCore\source\com\amfam\siscore\integration\service>loadjava -user sis_user/is3l
l@aw0u -oci8 -resolve MaintainService.class
Error while creating JAVA$CLASS$MD5$TABLE
ORA-01031: insufficient privileges
Error while getting old MD5 of com/amfam/siscore/integration/service/MaintainTigerService
ORA-00942: table or view does not exist
Error while creating CREATE$JAVA$LOB$TABLE
ORA-01031: insufficient privileges
Error while deleting com/amfam/siscore/integration/service/MaintainTigerService from lob table
ORA-00942: table or view does not exist
Error while loading class com/amfam/siscore/integration/service/MaintainTigerService
ORA-00942: table or view does not exist
Error while creating class com/amfam/siscore/integration/service/MaintainTigerService
ORA-29506: invalid query derived from USING clause
Error while deleting MD5 of com/amfam/siscore/integration/service/MaintainTigerService
ORA-00942: table or view does not exist
Error while deleting MD5 of com/amfam/siscore/integration/service/MaintainTigerService
ORA-00942: table or view does not exist
The following operations failed
class com/amfam/siscore/integration/service/MaintainTigerService: creation
exiting : Failures occurred during processing
C:\WSADWorkspaces\siscore\siscoreCore\source\com\amfam\siscore\integration\service>Jay,
You ned to grant user sis_user permission to load java classes into the database. Please refer to the Java Developer's Guide which is part of the Oracle documentation and can be accessed via:
http://tahiti.oracle.com
Good Luck,
Avi. -
Passing Tables back from Java Stored Procedures
Thomas Kyte has written (in reference to
trying to pass an array back from a stored
function call):
You can do one of two things (and both require the use of
objects). You cannot use PLSQL table types as JDBC cannot bind to
this type -- we must use OBJECT Types.
[snip]
Another way is to use a result set and "select * from
plsql_function". It could look like this:
ops$tkyte@8i> create or replace type myTableType as table of
varchar2 (64);
2 /
Type created.
ops$tkyte@8i>
ops$tkyte@8i>
ops$tkyte@8i> create or replace
2 function demo_proc2( p_rows_to_make_up in number )
3 return myTableType
4 as
5 l_data myTableType := myTableType();
6 begin
7 for i in 1 .. p_rows_to_make_up
8 loop
9 l_data.extend;
10 l_data(i) := 'Made up row ' | | i;
11 end loop;
12 return l_data;
13 end;
14 /
Function created.
ops$tkyte@8i>
ops$tkyte@8i> select *
2 from the ( select cast( demo_proc2(5) as mytableType )
3 from dual );
COLUMN_VALUE
Made up row 1
Made up row 2
Made up row 3
Made up row 4 [Image]
Made up row 5
So, your JDBC program would just run the query to get the data.
If the function "demo_proc2" cannot be called from SQL for
whatever reason (eg: it calls an impure function in another piece
of code or it itself tries to modify the database via an insert
or whatever), you'll just make a package like:
ops$tkyte@8i> create or replace package my_pkg
2 as
3
4 procedure Make_up_the_data( p_rows_to_make_up in
number ); 5 function Get_The_Data return myTableType;
6 end;
7 /
Package created.
ops$tkyte@8i>
ops$tkyte@8i> create or replace package body my_pkg
2 as
3
4 g_data myTableType;
5
6 procedure Make_up_the_data( p_rows_to_make_up in number )
7 as
8 begin
9 g_data := myTableType();
10 for i in 1 .. p_rows_to_make_up
11 loop
12 g_data.extend;
13 g_data(i) := 'Made up row ' | | i;
14 end loop;
15 end;
16
17
18 function get_the_data return myTableType
19 is
20 begin
21 return g_data;
22 end;
23
24 end;
25 /
Package body created.
ops$tkyte@8i>
ops$tkyte@8i> exec my_pkg.make_up_the_data( 3 );
PL/SQL procedure successfully completed.
ops$tkyte@8i>
ops$tkyte@8i> select *
2 from the ( select cast( my_pkg.get_the_data as mytableType
) 3 from dual );
COLUMN_VALUE
Made up row 1
Made up row 2
Made up row 3
And you'll call the procedure followed by a query to get the
data...
I have tried this, and it works perfectly.
My question, is what does the wrapper look
like if the stored function is written
in java instead of PL/SQL? My experiments
with putting the function in java have been
dismal failures. (I supposed I should also
ask how the java stored procedure might
look also, as I suppose that could be where
I have been having a problem)
nullThanks for the response Avi, but I think I need to clarify my question. The articles referenced in your link tended to describe using PL/SQL ref cursors in Java stored procedures and also the desire to pass ref cursors from Java to PL/SQL programs. Unfortunately, what I am looking to do is the opposite.
We currently have several Java stored procedures that are accessed via select statements that have become a performance bottleneck in our system. Originally the business requirements were such that only a small number of rows were ever selected and passed into the Java stored procedures. Well, business requirements have changed and now thousands and potentially tens of thousands of rows can be passed in. We benchmarked Java stored procedures vs. PL/SQL stored procedures being accessed via a select statement and PL/SQL had far better performance and scaleable. So, our thought is by decouple the persistence logic into PL/SQL and keeping the business logic in Java stored procedures we can increase performance without having to do a major rewrite of the existing code. This leads to the current problem.
What we currently do is select into a Java stored procedure which has many database access calls. What we would like to do is select against a PL/SQL stored procedure to aggregate the data and then pass that data via a ref cursor (or whatever structure is acceptable) to a Java stored procedure. This would save us a significant amount of work since the current Java stored procedures would simple need to be changed to not make database calls since the data would be handed to them.
Is there a way to send a ref cursor from PL/SQL as an input parameter to a Java stored procedure? My call would potentially look like this:
SELECT java_stored_proc(pl/sql_stored_proc(col_id))
FROM table_of_5000_rows;
Sorry for the lengthy post.
Maybe you are looking for
-
Anyone know how to insert to multiple tables on Dreamweaver?
Hey everyone, I'm a bit of a newbie at PHP and am trying to create my first "dynamic" site. I have a registration table with fields idNo (primary key & auto-increment), username, password, email. I also have another table called profile with fields
-
When I sinked my iphone 4 to my mac I lost all my appointments from June forward. They are not on my iphone or my ical. Why did this happen and how can I recover the information. This is very frustrating. I have not changed any of the settings on
-
hi, i've been trying to video chat with people using ichat for somet ime now, every time i try to do it though, it just says "user failed to respond". i am using an AIM screen name, and so is the person i am trying to chat with. both of us are using
-
Deploying sample applications in mosaic
Hello, i want to deploy the applications in Mosaic. I'm following these instructions: Use the Ant build files provided with the Mosaic ES2 installation to deploy sample applications to the server. To run Ant, type ant from the command line. When you
-
ITunes not recongizing my iPod shuffle
When I plug in my iPod shuffle the icon shows up on my desktop but not in iTunes. It also charges which is nice but I'm going nuts becuase I've had to listen to the same set of songs for a while now. I also just installed the latest version of iTunes