I have created a stored procedure which needs to be called
from the mule soft. Stored procedure has been created in Oracle and it inserts
the details in an employee table. If insertion is success or failed then it
gives a result code and results description as a part of output.
Stored Procedure:
Create or replace PROCEDURE SP_EMP ( EMP_ID IN VARCHAR2 , EMP_NAME IN VARCHAR2 , EMP_ADDRESS IN VARCHAR2 , RESULT_CODE OUT VARCHAR2 , RESULT_DESC OUT VARCHAR2 ) AS BEGIN INSERT INTO EMP_DETAILS VALUES (EMP_ID, EMP_NAME, EMP_ADDRESS); RESULT_CODE:='0'; RESULT_DESC:='SUCCESS'; EXCEPTION WHEN OTHERS THEN RESULT_CODE:='-1'; RESULT_DESC:='FAILED'; END SP_EMP;
Once we are ready with Stored procedure, can go ahead creating
a project in Anypoint Studio.
Create a Mule project with the name of “CallStoredProcedure”.
Drag connection in canvas as mention below starting with
Http, variable, database and then a logger to log values.
Now click on “Http” connection and configure the values.
Clcik on “+” icon
in “Connector Configuration” and
fill the below details (automatically filled) and click “OK”.
Now click on Variable and provide a static value to it, in
my case I have given “111” value to Emp_ID variable.
Now click on the Database connector to connect the Oracle
Database and then we can call our stored procedure from there.
Fill the necessary detail to connect the Oracle Database.
You need to add oracle connector driver to make it work otherwise it will give
error. I have added a JDBC connector from my local machine.
Now click on “Test Connection” to test our connectivity. If
everything goes successful then it will give you success message else failed
message. Click on OK button to proceed further.
Now connectivity is fine and now time to call stored
procedure. To do this you need to choose “Stored
Procedure” in Operation drop
down and write below query in “Parameterized
Query” window.
Now add the parameter by clicking the “+” icon and define “IN/OUT”
parameter. You can provide the values into it in “Values” section. I have taken EMP_ID value from the variable,
EMP_NAME is a static value as “SHRI”
and getting address from URL as dynamic value.
Now click on the logger connector to log the payload values.
We are all set to go, now run the program and hit the “localhost:8081?ADDRESS=Raebareli” URL
in your favorite browser.
Just after hitting the URL you can check the records in
Database table.
Just look into the logs, you will be able to find proper
output there of the stored procedure.
You can make any decision based on the output provided by
the stored procedure.
Mule Canvas Code:
<?xml version="1.0" encoding="UTF-8"?> <mule xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:db="http://www.mulesoft.org/schema/mule/db" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd"> <http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/> <db:oracle-config name="Oracle_Configuration" host="localhost" port="1521" instance="xe" user="SYSTEM" password="SYSTEM" doc:name="Oracle Configuration"/> <flow name="callstoredprocedureFlow"> <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/> <set-variable variableName="EmpID" value="111" doc:name="Variable"/> <db:stored-procedure config-ref="Oracle_Configuration" doc:name="Database"> <db:parameterized-query><![CDATA[call SP_EMP (:EMP_ID,:EMP_NAME,:EMP_ADDRESS,:RESULT_CODE,:RESULT_DESC)]]></db:parameterized-query> <db:in-param name="EMP_ID" type="VARCHAR" value="#[flowVars.empID]"/> <db:in-param name="EMP_NAME" type="VARCHAR" value="SHRI"/> <db:in-param name="EMP_ADDRESS" type="VARCHAR" value="#[message.inboundProperties.'http.query.params'.ADDRESS]"/> <db:out-param name="RESULT_CODE" type="VARCHAR"/> <db:out-param name="RESULT_DESC" type="VARCHAR"/> </db:stored-procedure> <logger level="INFO" doc:name="Logger" message="Result Code : #[payload.RESULT_CODE] and Result Description : #[payload.RESULT_DESC]"/> </flow> </mule>
Good article!
ReplyDeleteReading this article is useful for everyone. Thanks for this wonderful article.
Mulesoft Online Training
Mulesoft Training in Hyderabad
Very informative post for mulesoft developers.You can also visit goformule.com for mulesoft stuff.
ReplyDeleteGood article for new learners
ReplyDeleteThanks for sharing valuable information and very well explained. Keep posting.
ReplyDeletebest mulesoft online training
mulesoft training in hyderabad
Thank you for sharing wonderful information with us to get some idea about it.
ReplyDeleteMulesoft Online Training
Mulesoft Online Training in Hyderabad
nice posr.
ReplyDeleteSAP Grc training
SAP Secrity training
oracle sql plsql training
go langaunage training
azure training
java training
salesforce training