当前位置:网站首页>Stored procedures and stored functions

Stored procedures and stored functions

2022-07-05 22:02:00 The sea of waves

stored procedure And store function

image-20210625232627474

Create stored procedure

image-20210625232804382

create or replace procedure sayhelloword
as

-- The explanatory part 
begin
dbms_out_put_line("Hello world");

end;
/

Calling stored procedure

  1. exec sayhelloword();
  2. begin sayhelloword(); sayhelloword(); end;

image-20210625233329687

Create a storage function

image-20210627084107428

create or replace function queryempincome(eno in  number)
return number
as
-- Define variables to save employees' salaries and bonuses 
psal emp.sal%type;

pcome emp.comm%type;

begin
  -- Get the monthly salary and bonus of the employee 
  select sal,comm into psal,pcomm from emp where empno=eno;
  
  -- Return the annual income directly 
  return psal*12 + nvl(pcomm,0);
  
 end;

java How to access stored procedures and stored functions in programs

//  Database connection (JDBC)


package com.claa.javabasic.Connect;

import java.sql.*;

/** * @Author: claa * @Date: 2021/06/27 09:43 * @Description: Oracle Jdbc  The connection of  */
public class JDBCUtilsO {
    
    private static String driver = "oracle.jdbc.OracleDriver";

    private static String url="jdbc:oracle:thin:@192.168.56.101:1521:orcl";

    private static String user ="scott";

    private  static String password ="tiger";

    //  Register database driver 
    static {
    
        try{
    
            Class.forName(driver);
        }catch (ClassNotFoundException e){
    
          throw new ExceptionInInitializerError(e);
        }
    }

    // Get the driver of the database 
    public  static Connection getConnection(){
    
        try{
    
           return DriverManager.getConnection(url,user,password)
        }catch (SQLException e){
    
            e.printStackTrace();
        }
        return null;
    }


    //  Release the resources of the database 
    public static void Release(Connection conn, Statement st, ResultSet rs) {
    
        try {
    
            if(rs!=null){
    
                rs.close();
            }
        } catch (SQLException e) {
    
            e.printStackTrace();
        }finally {
    
             drs = null;
        }

        try {
    
            if(st!=null){
    
                st.close();
            }
        } catch (SQLException e) {
    
            e.printStackTrace();
        }finally {
    
            st = null;
        }

        try {
    
            if(st!=null){
    
                st.close();
            }
        } catch (SQLException e) {
    
            e.printStackTrace();
        }finally {
    
            conn = null;
        }

    }


}

//  Calls stored procedures and functions 
package com.claa.javabasic.Connect;

import oracle.jdbc.OracleTypes;
import org.junit.Test;

import java.sql.CallableStatement;
import java.sql.Connection;

/** * @Author: claa * @Date: 2021/06/27 10:39 * @Description: */
public class TestProcedure {
    

    @Test
    public void testProcedure(){
    
        // stored procedure  
        String sql = "{call queryempincome(?,?,?,?)} ";

        //  Storage function 
        //String sql = "{?=call queryempincome(?,?,?,?)} ";

        Connection conn = null;

        CallableStatement call = null;
        try{
    
            //  Get a connection 
            conn = JDBCUtilsO.getConnection();

            //  Created by connection Statement
            call = conn.prepareCall(sql);

            //  about  in Parameters 
            call.setInt(1,7839);

            //  about Out  Parameters 
            call.registerOutParameter(2, OracleTypes.VARCHAR);
            call.registerOutParameter(3,OracleTypes.NUMBER);
            call.registerOutParameter(4,OracleTypes.VARCHAR);

            // Execution call 
            call.execute();

            // Take out the results 
            String name = call.getString(2);
            System.out.println(name);

        }catch(Exception e){
    
           e.printStackTrace();
        }finally {
    
            JDBCUtilsO.Release(conn,call,null);
        }
    }
}

There is something wrong , Welcome to the discussion .
Last , Welcome to pay attention to my wechat , What do you like , Collection , Forwarding is my greatest encouragement .

image.png

原网站

版权声明
本文为[The sea of waves]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140504117148.html