Oracle function using Java code


#1

Сайн байцгаана уу.

Stored Procedure, Function дээр жава кодыг хэрхэн ашигласан туршлагаасаа хуваалцъя гэж бодлоо. Уг асуудлыг шийдэх гээд хайж байгаа нэгэнд хэрэг болж магад

Алхам 1: Ашиглах жава кодоо бэлдэх. Миний хувьд Procedure-c URL руу GET болон json POST илгээх шаардлага гарсан. /Example: GET and POST бичсэн кодоо .java өргөтгөлтэй file болгон хадгална/

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

    public class CallHttpFunction {
        
        public static String getAction(String _url) {
    	String resultVal = "";
    	try
    	{
                URL obj = new URL(_url);
                HttpURLConnection con = (HttpURLConnection) obj.openConnection();
                con.setRequestMethod("GET");
                BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream()));
                String inputLine;
                StringBuffer response = new StringBuffer();
                while ((inputLine = in.readLine()) != null) {
    		response.append(inputLine);
    		}
                in.close();
                resultVal = response.toString();
    	}
    	catch(Exception ex)
    	{
                resultVal = "ERROR: " + ex.getMessage();
    	}
    	return resultVal;   
        }
        
        public static String postAction(String _url, String _json){
            String resultVal = "";
            try
    		{
    			URL obj = new URL(_url);
    			HttpURLConnection conn = (HttpURLConnection) obj.openConnection();
    			conn.setDoOutput(true);
    			conn.setRequestMethod("POST");
    			conn.setRequestProperty("Content-Type", "application/json");
    			String input = _json;
    			DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
    			wr.writeBytes(input);
    			wr.flush();
    			wr.close();
    			BufferedReader in = new BufferedReader(
    		        new InputStreamReader(conn.getInputStream()));
    			String inputLine;
    			StringBuffer response = new StringBuffer();
    			while ((inputLine = in.readLine()) != null) {
    				response.append(inputLine);
    			}
    			in.close();
    			resultVal = response.toString();
    		}
    		catch(Exception ex)
    		{
    			resultVal = "ERROR: " + ex.getMessage();
    		}
            return resultVal;
        }
    }

Алхам 2: Кодоо бааз руу хуулах. /Би java кодоо dmpdir дотороо хуулж байгаад load хийсэн./

  1. Windows дээр upload хийх. " loadjava -user user_name/password -verbose filePath "
    winLoadjava
  2. Linux дээр upload хийх.

Load хийгдсэн java маань дараах байдалтай харагдана.

Алхам 3: Create Oracle Function

  1. GET
    create or replace FUNCTION getUrl(pUrl VARCHAR2) RETURN VARCHAR2 AS
    LANGUAGE JAVA NAME ‘CallHttpFunction.getAction(java.lang.String) return java.lang.String’;
  2. POST
    create or replace FUNCTION postUrl(pUrl VARCHAR2, pJson VARCHAR2) RETURN VARCHAR2 AS
    LANGUAGE JAVA NAME ‘CallHttpFunction.postAction(java.lang.String, java.lang.String) return java.lang.String’;

Үр дүн:


#2

Сайхан цэгцтэй мэдээлэл байна… :+1::wave::ok_hand::eyeglasses: