Connecting Tech Pros Worldwide Forums | Help | Site Map

Executing Oracle Stored Procedures with both IN & OUT type parameter.

debasisdas's Avatar
Moderator
 
Join Date: Dec 2006
Location: Bangalore ,India
Posts: 7,511
#1   Sep 8 '07
Oracle Procedure with both IN & OUT type as parameter mode.
========================================
Expand|Select|Wrap|Line Numbers
  1. CREATE OR REPLACE PROCEDURE IN_OUT
  2. (
  3. ENO IN EMP.EMPNO%TYPE,
  4. V_NAME OUT EMP.ENAME%TYPE,
  5. V_SAL  OUT EMP.SAL%TYPE,
  6. V_JOB OUT EMP.JOB%TYPE,
  7. V_DEPTNO OUT EMP.DEPTNO%TYPE
  8. )
  9. IS
  10. BEGIN
  11. SELECT ENAME,SAL,JOB,DEPTNO INTO V_NAME,V_SAL,V_JOB,V_DEPTNO FROM EMP WHERE EMPNO=ENO;
  12. EXCEPTION
  13. WHEN NO_DATA_FOUND THEN
  14. RAISE_APPLICATION_ERROR(-20005,'NO RECORD FOUND......!');
  15. WHEN OTHERS THEN
  16. RAISE_APPLICATION_ERROR(-20006,'SOME OTHER ERROR ......!');
  17. END;
To call the above Oracle procedure from Vb.
================================
Expand|Select|Wrap|Line Numbers
  1. 'general declarationDim CON As New ADODB.Connection
  2. Dim RS As New ADODB.Recordset
  3. Dim PR As New ADODB.Parameter
  4. Dim PR1 As New ADODB.Parameter
  5. Dim PR2 As New ADODB.Parameter
  6. Dim PR3 As New ADODB.Parameter
  7. Dim PR4 As New ADODB.Parameter
  8.  
  9. Private Sub Command1_Click()
  10. On Error GoTo MYERR
  11. CON.Open "Provider=MSDAORA.1;Password=DEBASIS;User ID=DEBASIS;Data Source=DAS;Persist Security Info=True"
  12. Dim CMD As New ADODB.Command
  13. CMD.ActiveConnection = CON
  14. CMD.CommandType = adCmdStoredProc
  15. CMD.CommandText = "IN_OUT"
  16. Set PR = CMD.CreateParameter("ENO", adInteger, adParamInput, 4, Int(DC1.Text))
  17. CMD.Parameters.Append PR
  18. Set PR1 = CMD.CreateParameter("V_NAME", adVarChar, adParamOutput, 10)
  19. CMD.Parameters.Append PR1
  20. Set PR2 = CMD.CreateParameter("V_SAL", adNumeric, adParamOutput, 6)
  21. CMD.Parameters.Append PR2
  22. Set PR3 = CMD.CreateParameter("V_JOB", adVarChar, adParamOutput, 9)
  23. CMD.Parameters.Append PR3
  24. Set PR4 = CMD.CreateParameter("V_DEPTNO", adNumeric, adParamOutput, 2)
  25. CMD.Parameters.Append PR4
  26. CMD.Execute
  27. Text1.Text = IIf(Not IsNull(CMD.Parameters("V_NAME").Value), CMD.Parameters("V_NAME").Value, "")
  28. Text3.Text = IIf(Not IsNull(CMD.Parameters("V_SAL").Value), CMD.Parameters("V_SAL").Value, "")
  29. Text2.Text = IIf(Not IsNull(CMD.Parameters("V_JOB").Value), CMD.Parameters("V_JOB").Value, "")
  30. Text4.Text = IIf(Not IsNull(CMD.Parameters("V_DEPTNO").Value), CMD.Parameters("V_DEPTNO").Value, "")
  31. CMD.Cancel
  32. CON.Close
  33. Exit Sub
  34. MYERR:
  35. MsgBox Err.Description
  36. I = Val(Mid(Err.Description, 4, 6))
  37. If I = -20005 Then
  38. MsgBox "NO RECORD FOUND FOR THIS NO......!", vbCritical, "NO DATA"
  39. ElseIf I = -20006 Then
  40. MsgBox "SOME OTHER ERROR......!", vbCritical, "ERROR"
  41. End If
  42. End Sub
  43.  



Closed Thread