Java Vs PL/SQL - JD Team

I've read some posts and didn't find a similar question...
I'm new to this forum and to Java also, so most of this acronyms (JSP,UIX,BC4J,EJB, etc.) can do nothing more than confuse me, but that's not my concern 'cause I know I'll grasp 'em little by little. What I am worried about is what will happen with PL/SQL. Will it disappear? What exactly Oracle means when they say they will support the Client-Server model until 2006? are you planning to kill PL/SQL?
Other thing that concerns me is the support for some MS technologies like COM/COM+ and the .Net architeture. Can we hope to find such support in JDeveloper's future versions, or do we already have it in version 9i?
Cristian.
P.S. Please, if you have access to him, tell Mr. Larry Ellison that he should consider seriously buying Borland Inc. Hmmm... is there something about this we don't know?

PL/SQL is not going away. The statement about Oracle Forms client/server deployment means that after the date you mention, only the "Web-Forms" style of Forms app deployment (that is, running inside a browser, rather than running as a Windows application) will be supported.
Each database release adds many new PLSQL features, improving performance and functionality.
JDeveloper 9.0.3 features many new features for the PLSQL developer writing stored procedures and functions, too. This includes full debugging support for PLSQL stored procs/funcs and Java Stored Procedures running inside the database as well.

Similar Messages

  • Java with PL/SQL

    Hi !
    I hope that someone will be able to answer me. Is there any way to integrate java into PL/SQL to set a LDAP connexion context. In java, we can do something like :
    // Set up the environment for creating the initial context
    Hashtable env = new Hashtable(11);
    env.put(Context.INITIAL_CONTEXT_FACTORY,
    "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=JNDITutorial");
    env.put("java.naming.ldap.version", "2");
    // Create the initial context
    DirContext ctx = new InitialDirContext(env);
    I would like to be able to create my context and use it with the DBMS_LDAP in PL/SQL. Is there any way to do it ? Do I have to use DBMS_SESSION.set_context ? I'm new with all those concepts and it is really important...
    Thanks for your help !
    Chantale

    > The problem is that we have a compatibility problem with LDAP. When I try to retrieve information
    in LDAP, I have strange characters that appears instead of accents like é,è,ë or whatever... someone
    in my developement team has the same problem and he solved it using java.naming.ldap.version and put
    it in version 2. The problem is that he developed in Java and I am in PL/SQL. That's the problem...
    No. That is not the problem.
    The problem is that you have no clue what the problem is, and now jump at the first available thing that seems to be a solution for this unknown problem. And who knows just how many other problems this so-called solution will now introduce... never mind whether or not the root cause of the original problem will be solved by this solution.
    Software engineering does not work like this.
    Software engineering says:  Identify the Problem.
      Analyse the Problem.
      Solve the ProblemAll you have identified is a symptom of some problem. A character set issue. How about identifying the actual problem and then solving that problem comprehensively?

  • New "SQL Developer Team Announcements" sticky note

    In the new SQL Developer Team Announcements sticky note posted a couple of days ago:
    <li>Is "SQL Developer Team Announcements" the right title? It appears to be hard enough to get people to read these things anyway, and this suggests that it's either targetted at the SQL Developer Team, or contains information about them.
    <li>The SQL Developer Exchange link for Enhancement Requests links to the sticky note, not the Exchange Feature Requests page.
    <li>Suggest using "Forum Tips" or some other alternative instead of "Forum Etiquette": "etiquette" too obscure a term?
    <li>"When asking a question, provide all the details that someone would need to answer it.": Can these be spelled out? e.g. SQL Developer version, DB version, Java version, OS etc.

    Sue, thanks for the prompt attention.
    3 sounds good: News, Posting Guidelines, and a FAQ for the rest? (sorry, I'd lump "collateral" in with "etiquette" as clarity goes).
    A FAQ with Qs like:
    <li>How do I report bugs?
    <li>Where do I request enhancements?
    <li>Where can I find extensions?
    may be the best way to handle the "collateral" as it can retain the same (easily understood title) whilst being extendable to cover virtually anything.
    As an example, I think Mark Drake has handled this well on the {forum:id=34} forum.

  • Passisng array from Java into PL/SQL procedure

    Hi everybody!
    I have type created with :
    CREATE OR REPLACE TYPE my_type IS TABLE OF number;
    Next I have procedure withinin a package which has parameters:
    PROCEDURE my_proc
    (p_Result OUT NUMBER,
    p_Id table.column%TYPE,
    p_MyType my_type
    I call this procedure from Java :
    import javax.sql.*;
    import java.sql.*;
    import oracle.jdbc.*;
    import oracle.sql.ARRAY;
    import oracle.sql.ArrayDescriptor;
    public class MyClass extends QueryClient {
    private int Id;
    private int type;
    private Integer[] List;
    private int result;
    public MyClass(int Id, eType type,
    Integer[] List) throws SQLException {
    this.Id = Id;
    this.type = (type.equals(eType.TYPE_EXPORT) ? 1 : 0);
    this.List = List;
    this.execute("{call my_package.my_proc(?,?,?,?)}");
    public void body(CallableStatement stmt) throws SQLException {
    ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor("MY_USER.MY_TYPE", getCon());
    ARRAY array_to_pass = new ARRAY(descriptor, getCon(), this.List);
    // register the type.
    stmt.registerOutParameter(1, OracleTypes.NUMBER); // result of procedure calling
    stmt.setInt(2, this.Id );
    stmt.setInt(3, this.type);
    stmt.setArray(4, array_to_pass);
    // execute and retrieve the result set
    stmt.execute();
    this.result = stmt.getInt(1);
    public int getResult() {
    return result;
    EVERYTHING WORKS FINE, BUT when I move type "my_type" into package header
    TYPE my_type IS TABLE OF number;
    I receive error after calling procedure
    java.sql.SQLException: invalid name pattern: MY_USER.MY_TYPE
    I dropped type my_type after moving it into package. So there is only one my_type, in the package.
    User who call procedure is owner of the package.
    So questions are:
    1. Is it possible to have my_type within package without error?
    2. Is it possible to describe my_type without having a connection to database? My aim is eliminate number of connections to database.
    Thanks all.
    Matus.

    You can't use the packaged type for this. You need to use the original collection type (i.e. via the CREATE TYPE syntax) as you have discovered yourself.
    Regards

  • Java and MS SQL Server 2000 problem, please help

    please help me. I am using java and MS SQL Server 2000, and I'm trying to access and verify the login. I'm getting the following error message: [Microsoft][ODBC SQL Server Driver]Invalid Descriptor Index
    Can any please help in this regard.
    String userNumber = (String)userNumField.getValue();
    char[] userPasswordArray = userPasswordField.getPassword();
    String userPassword = new String(userPasswordArray);
         try {
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                java.sql.Connection connection = java.sql.DriverManager.getConnection("jdbc:odbc:Dikolobe_Data");
                java.sql.PreparedStatement statement = connection.prepareStatement(
                        "SELECT USER_NUMBER, USER_PASSWORD, USER_CLASS, USER_STATUS " +
                        "FROM SYS_USER " +
                        "WHERE (USER_NUMBER = ? AND USER_PASSWORD = ?);");
                statement.setString(1, userNumber);
                statement.setString(2, userPassword);
                java.sql.ResultSet result = statement.executeQuery();
                if(result.next()) {
                    String userStatus = result.getString(4);
                    if(userStatus.equals("logged on")) {
                        String loginErrorMessage = "User with number: " + userNumber + " is already logged on.";
                        javax.swing.JOptionPane loginErrorPane = getNarrowOptionPane(72);
                        loginErrorPane.setMessage(loginErrorMessage);
                        loginErrorPane.setMessageType(javax.swing.JOptionPane.ERROR_MESSAGE);
                        javax.swing.JDialog loginErrorDialog = loginErrorPane.createDialog(null, "Login Error");
                        loginErrorDialog.setVisible(true);
                    else {
                        String userClassification = result.getString(3);
                        if(userClassification.equals("Administrator")) {
                            AdminHomePage newAdminHomePage = new AdminHomePage();
                            newAdminHomePage.setVisible(true);
                        else if(userClassification.equals("Educator")) {
                            EduHomePage newEduHomePage = new EduHomePage();
                            newEduHomePage.setVisible(true);
                        statement = connection.prepareStatement(
                                "UPDATE SYS_USER SET USER_STATUS = ? " +
                                "WHERE USER_NUMBER = ?");
                        statement.setString(1, "logged on");
                        statement.setString(2, userNumber);
                        statement.executeUpdate();
                        dispose();
                }

    Doesn't the following link give you enough information?
    http://www.google.com/search?q=invalid+descriptor+index
    Anyway .. This error means that the given ResultSet column index which you're trying to retrieve the value from is out of the range.

  • How to use Java with PL/SQL commands to send an email with attachment

    Apologizes in advance if this is the wrong place to ask the question.
    I need to use Java with PL/SQL commands to send an email with attachment. My java application runs from the command line and does some magic to gather info from an Oracle 11g db. If the DB has sendmail configured, I'd like to send the results of the data gathering as an attachment to the email addresses. I'm not sure how to do this. I've been reading up on on PL/SQL can send email with UTL_SMTP - with attachments. I'm just not sure how to translate that into being triggered by my Java application. Any suggestions or pointers on what I should read would be appreciated.
    Background - I've been programming in Java for 10+ years, but this is my first time using databases. I also have been on these forums for a long time, but lost my profile when it was switched to Oracle.
    Thanks for all help.

    user13726880 wrote:
    The original requirements were put together and given to me, an Oracle newbie. They expected the Java app to use something intrinsic to Oracle and Unix sendmail. To solve my problem, I use a JDBC connection to run some SQL commands. I take that data, format it and send the results by email to the user. By default the requirement is to send it as an HTML attachment using Unix 'sendmail'. So I do that using Runtime exec. I have also added JavaMail functionality as an alternative to sendmail. It works great and as expected.Sounds like a reasonable solution.
    Note however that PL/SQL itself can send email. And PL/SQL can call unix sendmail too.
    However myself I would have done it in java with JavaMail.

  • Joining java array with SQL table in a stored procedure

    Hey,
    I am calling a pl/sql stored procedure from a java program passing two arrays (employees) and (departments) as parameters to the procedure. Within the procedure I have stored the arrays in a table of records like this:
    type t_emp_type is record (employee_id number, department_id number);
    type t_emp_tbl_type is table of t_emp_type index by binary_integer;
    Where all elements in employees are stored in the employee_id column and departments are stored in the department_id column. So basically I've got a table like:
    l_employee_tbl t_emp_tbl_type;
    Looped through the arrays and stored the data like:
    for i in 1..p_employees.count loop
    l_employee_tbl(i).employee_id := p_employees(i);
    l_employee_tbl(i).deparment_id := p_departments(i);
    end loop;
    Now I would like to compare my l_employee_tbl with a SQL table in the database. Basically I would like to join my l_employee_tbl table with a SQL table named departments on department_id, returning all department_id:s that was not found in table departments.
    However, it is not possible to select from a user-defined table type. I have also tried to use the table() function and to cast l_employee_tbl, but found out it can't be done with records. And I would really like to use records or some other type where define my PL/SQL data. I know that you should not mix PL/SQL and SQL but in this case I think it is more efficient to try joining these "tables". Does anyone have a solution for this or advice to try something else out? It would be most appreciated.
    Edited by: 963281 on 2012-okt-04 14:25
    Edited by: 963281 on 2012-okt-05 01:53

    963281 wrote:
    I am calling a pl/sql stored procedure from a java program passing two arrays (p_employees) and (p_departments) as parameters to the procedure. Within the procedure I have stored the arrays in a table of records like this:
    type t_emp_type is record (employee_id number, department_id number);
    type t_emp_tbl_type is table of t_emp_type index by binary_integer;Why do you create an associative array?
    Now I would like to compare my l_employee_tbl with a SQL table in the database. Basically I would like to join my l_employee_tbl table with a SQL table named departments on department_id, returning all department_id:s that was not found in table departments. Of course, not possible as the SQL engine does not support PL/SQL user defined types. PL/SQL however support user defined SQL types. Which makes SQL defined types a lot more flexible.
    However, it is not possible to select from a user-defined table type. I have also tried to use the table() function and to cast l_employee_tbl, but found out it can't be done with records. Never mind SQL and PL/SQL - as a generic programming data structure principle. How do you expect being able to cast an associative array (name-value pairs) to a standard array? The two data structures are very different. So I'm puzzled in how you expect to move a non-scalar name-value pair data structure into a non-scalar value only data structure?
    And I would really like to use records or some other type where define my PL/SQL data. Why exactly? If the Java or PL/SQL data structure is populated using SQL data and database data, and wanting to use that data structure in SQL, what is the point? Why pull SQL data into a client data structure at all then - surely it is far more performant and scalable to rather keep that data in the database, and do the joins/selects/filters/etc using SQL?
    There is also the issue of scalability of local data structures in PL/SQL. The PL/SQL engine runs inside an Oracle server process, consuming private process memory on the server. The bigger the data structures used in PL/SQL, the more server memory needs to be allocated to that server process. This does not scale. Especially not if 10 or more such server processes are running the same PL/SQL code and each server needs to grab large chunks of server memory.
    If the data from Java comes from another source (e.g. keyboard, etc), and you need a means of storing this data server-side for use by PL/SQL and SQL. There are 2 basic choices. PL/SQL arrays for smallish amounts of data - and basing these arrays preferable on SQL data types allowing the array to be used by both SQL and PL/SQL engines. If the amount of data is not smallish, then it should be stored in the SQL engine (database) as that is designed for that exact purpose. And if the data is transient, then a GTT (global temp table) structure can be used (and indexed for optimal access).

  • How to connect Java and Microsoft SQL Server 2000

    hi,
    could anyone please teach me how to connect Java and SQL Sever 2000?? if possible could you guys provide me with an example??? i could hardly find any relevant resources about it...
    Thanks ~!

    thanks for the information...
    by the way hv any working module on it?? i'm new to
    both Java and Microsoft SQL Server... Thanks againFirst things first... you should read this:
    http://java.sun.com/docs/books/tutorial/jdbc/
    This is microsofts official JDBC Driver: http://www.microsoft.com/sql/downloads/jdbcregister.asp
    Install it and the documentation has some usage examples

  • Java extension for SQL Developer 2.1 (SqlEditor)

    Hello,
    we are developing a java extension for SQL Developer. It was working fine in version 1.5.5 but it seems that some of the java classes were changed in version 2.1 so it does not any more. In the SQL editor, we want to have a context menu action that gets the selected SQL statement and calls a database function with it as an argument. Our code looks like
    @RegisteredByExtension("our.developer.extension")
    public final class OurCommand extends Command {
    public int doit() {
    SqlEditor sqlEditor = (SqlEditor)getContext().getView();
    String query = sqlEditor.getView().getSqlStatement();
    sqlEditor.executeSql(query, "");
    //or
    //sqlEditor.getView().scriptRunner(query);
    Unforunately, in SQL Developer 2.1 the class oracle.dbtools.sqlworksheet.sqlview.SqlEditor does not exist. Does anybody know how to write this example for version 2.1? Is there an API documentation (alas, [http://wiki.oracle.com/page/SDK+2.0] is an empty article)?
    BTW, does anybody know how to open the dialog for connecting to a database when sqlEditor.getConnection() is null?

    I got it to work using a BASIC call instead of my normal TNS call.
    We use MS SMS to package the Oracle client and SQL Developer and push it out to users so we don't have people visiting desktops. Also, we use OID to store the entries instead of a tnsnames file so that we don't have to maintain a TNSNAMES file.
    I am testing 2.1 as we would eventually upgrade when it goes GA.
    2.1 seems to be built on Oracle 11g. Issue will be that since 99% of our databases are 10gr2 as well as 100% of our client population will be be forced to upgrade the Oracle client to use 2.1 as we do today without lots of changes for the end user?
    We don't broadcast the information the average user requires for a BASIC connection so that is out for non technical users..
    We have SQL Developer 1.5.5 right now and this is not and issue.
    Hopefully, this will be resolved during EAI for 2.1.

  • Is it possible to pass blob from java to PL/SQL ?

    Hi, I try to bind a PL/SQL function who return a blob to a java class :
    Signature of java method :
        public static Blob getBLOB(int aId, String aJDBC) {Create PL/SQL function :
    create or replace function aa_java(myPiId in number,myPiJDBC in varchar2) return blob
    as language java
    name 'zip.ReadBLOB.getBLOB(int,java.lang.String) return java.sql.Blob';
    /In java code, my blob has the right size (150 Ko) but in PL/SQL, size = 0 !!!
    Any ideas ?

A: Is it possible to pass blob from java to PL/SQL ?

Thank you, but I think I have a Java problem...
Here is my code :
package zip;
import java.sql.*;
import oracle.jdbc.OracleDriver;
import oracle.sql.BLOB;
public class ReadBLOB {
    public static BLOB getBLOB(int aId, String aJDBC) {
        BLOB vBlob = null;
        try {
            DriverManager.registerDriver(new OracleDriver());
            Connection connection = DriverManager.getConnection(
                aJDBC,
            PreparedStatement stat = connection
                .prepareStatement("select image from aa_blob where id="+aId);
            ResultSet rs = stat.executeQuery();
            if (rs.next()) {
                vBlob = (BLOB) rs.getBlob(1);
                System.out.println("Taille 1 : "+vBlob.length());
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        return vBlob;
    public static void main(String[] args) throws Exception {
        BLOB vBlob = getBLOB(1, "jdbc:oracle:thin:@vdn-ceg5:1521:DEV5");
        System.out.println("Taille 2 : "+vBlob.getLength());
}When I run the main method, I have :
Taille 1 : 150260
Taille 2 : 86
!!!!????!!!!????

Thank you, but I think I have a Java problem...
Here is my code :
package zip;
import java.sql.*;
import oracle.jdbc.OracleDriver;
import oracle.sql.BLOB;
public class ReadBLOB {
    public static BLOB getBLOB(int aId, String aJDBC) {
        BLOB vBlob = null;
        try {
            DriverManager.registerDriver(new OracleDriver());
            Connection connection = DriverManager.getConnection(
                aJDBC,
            PreparedStatement stat = connection
                .prepareStatement("select image from aa_blob where id="+aId);
            ResultSet rs = stat.executeQuery();
            if (rs.next()) {
                vBlob = (BLOB) rs.getBlob(1);
                System.out.println("Taille 1 : "+vBlob.length());
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        return vBlob;
    public static void main(String[] args) throws Exception {
        BLOB vBlob = getBLOB(1, "jdbc:oracle:thin:@vdn-ceg5:1521:DEV5");
        System.out.println("Taille 2 : "+vBlob.getLength());
}When I run the main method, I have :
Taille 1 : 150260
Taille 2 : 86
!!!!????!!!!????

  • Advantages and Disadvantages of calling java from PL/SQL

    Hi,
    I have one doubt. What are all the advantages and disadvantages of the calling java from PL/SQL?
    In actual scenario the java program will be in the Application server side. It will do the operation and it will store the result in Data base. But in this case (calling java from PL/SQL), we are loading the java program in the Data base and it is doing the operations.
    I have seen many posts are coming regarding loading jar files into the database. Actually the jar will deploy in to Application server. Is there any difference instead of keeping in the Application server side?
    Then I have read,
    advantages:
    -> java having lot API's. so PL/SQL can use that API's.
    -> if we can not do anything in PL/SQL. we can do it using this mtd(calling java from PL/SQL).
    My questions:
    -> could you explain what are all the things we can not do but we can do using "calling java from PL/SQL" method?
    -> is there any other advantages?
    Disadvantages:
    -> the performance is very slow in calling java from PL/SQL.
    My questions:
    -> Then why others are loading java files and jar files into database?
    -> is there any other disadvantages?
    Could you explain about this one? It will be more helpful to others also…
    Regards,
    kk

    Hi,
    You can read the free first chapter of my book @ http://www.amazon.com/gp/product/1555583296/ (see details then Excerpt)
    Kuassi http://db360.blogspot.com

  • Using java in Pl-SQL

    hi all,
    anybody plz tell me funda of using java in pl-sql with oracle 9i ,if possible send an example to my ID [email protected]
    Regards,
    Ajay

    Hi,
    It's all documented and online:
    http://download.oracle.com/docs/cd/B10501_01/java.920/a96659/toc.htm
    http://download.oracle.com/docs/cd/B10501_01/java.920/a96659/05_dev.htm#22878
    10G doc, but might be interesting too:
    http://download.oracle.com/docs/cd/B19306_01/java.102/b14187/chone.htm#BABCFIIF

  • Session storage between Java and PL/SQL

    Hi all,
    We have made Java servlet using session storage. The data stored is valid until session is changed. Seems that session is changed during logon or even if web page (where the servlet is located) is refreshed!
    PL/SQL doesn't lost the session storage data during logon. But is it possible to find Java session storage from PL/SQL session storage?
    Java session storage doesn't use domain name or subdomain which are mandatory for PL/SQL session storage.
    Portal version is 3.0.9.8.5
    Thanks,
    Jari

    See my answer Session storage between Java and PL/SQL.
    Peter

  • Create Oracle Text stoplist in Java with PL/SQL

    Hi, I need help with this
    I do connection Oracle database with Java by using JDBC. I need create stoplist in my
    Oracle Text application that I create with PL/SQL procedure. I want to add stopwords to
    this stoplist directly in Java therefore I must create this procedure in Java.
    This procedure is:
    begin
    ctx_ddl.create_stoplist('mystop', 'BASIC_STOPLIST');
    ctx_ddl.add_stopclass('mystop', 'NUMBER');
    ctx_ddl.add_stopword('mystop', 'word1');
    end;
    CTX_DDL is package in Oracle Text. This procedure runs functions directly on Oracle no
    problems. I don´t know - how create this procedure in Java and run this in Oracle by
    using JDBC. Can you anybody help, please?

    > The problem is that we have a compatibility problem with LDAP. When I try to retrieve information
    in LDAP, I have strange characters that appears instead of accents like é,è,ë or whatever... someone
    in my developement team has the same problem and he solved it using java.naming.ldap.version and put
    it in version 2. The problem is that he developed in Java and I am in PL/SQL. That's the problem...
    No. That is not the problem.
    The problem is that you have no clue what the problem is, and now jump at the first available thing that seems to be a solution for this unknown problem. And who knows just how many other problems this so-called solution will now introduce... never mind whether or not the root cause of the original problem will be solved by this solution.
    Software engineering does not work like this.
    Software engineering says:  Identify the Problem.
      Analyse the Problem.
      Solve the ProblemAll you have identified is a symptom of some problem. A character set issue. How about identifying the actual problem and then solving that problem comprehensively?

  • URGENT: Problems with the CREATE JAVA command in SQL

    I am trying to publish a Java class to the database and have to use CREATE JAVA rather than loadjava for reasons I won't go into.
    However, I get the following error:
    SQL> create java class using bfile ('C:\neil', 'SkyNetworkRequestUtil.class');
    create java class using bfile ('C:\neil', 'SkyNetworkRequestUtil.class')
    ERROR at line 1:
    ORA-22929: invalid or missing directory name
    I can assure you that the C:\neil directory exists and the class exists in that directory, so what am I doing wrong?
    Hopeful thanks in advance.

    Did you try using C:\\ instead of C:\?
    If this does NOT work, then go into the directory where you have your .class file and
    use '.' as the directory specification.
    Hope this helps.

  • Maybe you are looking for